> ISPO SDK documentation. [HTML](https://ispo.ai/docs/variables/core.fs.html) · [Documentation index](https://ispo.ai/docs/llms.txt)

# Variable fs`Const`

```typescript
fs: {
    delete: (path: string) => Promise<void>;
    external: {
        list: (slotId: string, path?: string) => Promise<ExternalFolderEntry[]>;
        readBinary: (
            slotId: string,
            path: string,
        ) => Promise<ExternalReadBinaryResult>;
        readText: (slotId: string, path: string) => Promise<string>;
        writeText: (
            slotId: string,
            path: string,
            content: string,
            expectedSha256: string | null,
        ) => Promise<ExternalWriteTextResult>;
    };
    list: (path?: string | undefined) => Promise<string[]>;
    read: (path: string) => Promise<string>;
    readBinary: (path: string) => Promise<Uint8Array<ArrayBufferLike>>;
    write: (path: string, content: string) => Promise<void>;
    writeBinary: (path: string, content: Uint8Array) => Promise<void>;
} = ...
```

Types: [ExternalFolderEntry](../interfaces/core.ExternalFolderEntry.md), [ExternalReadBinaryResult](../interfaces/core.ExternalReadBinaryResult.md), [ExternalWriteTextResult](../interfaces/core.ExternalWriteTextResult.md)

Project-scoped filesystem. Paths are resolved against the host-resolved private project data root. Paths that escape (`..` etc.) are rejected with a `scope violation: ...` error.

Requires manifest `requests.fs === 'self'` and the host `fs` grant.

Its six private-storage methods are retained only for one-shot legacy importers. Store new structured state in Entities and user-visible artifacts in Files. `fs.external` remains the current borrowed-folder API.

#### Type Declaration

*   ##### <a id="delete"></a>delete: (path: string) \=> Promise<void\>
    
    #### <a id="deprecated"></a>Deprecated
    
    Retained only for one-shot legacy importers.
    
*   ##### <a id="external"></a>external: {  
        list: (slotId: string, path?: string) \=> Promise<[ExternalFolderEntry](../interfaces/core.ExternalFolderEntry.md)\[\]\>;  
        readBinary: (  
            slotId: string,  
            path: string,  
        ) \=> Promise<[ExternalReadBinaryResult](../interfaces/core.ExternalReadBinaryResult.md)\>;  
        readText: (slotId: string, path: string) \=> Promise<string\>;  
        writeText: (  
            slotId: string,  
            path: string,  
            content: string,  
            expectedSha256: string | null,  
        ) \=> Promise<[ExternalWriteTextResult](../interfaces/core.ExternalWriteTextResult.md)\>;  
    }
    
*   ##### <a id="list"></a>list: (path?: string | undefined) \=> Promise<string\[\]\>
    
    #### <a id="deprecated-1"></a>Deprecated
    
    Retained only for one-shot legacy importers.
    
*   ##### <a id="read"></a>read: (path: string) \=> Promise<string\>
    
    #### <a id="deprecated-2"></a>Deprecated
    
    Retained only for one-shot legacy importers.
    
*   ##### <a id="readbinary"></a>readBinary: (path: string) \=> Promise<Uint8Array<ArrayBufferLike\>\>
    
    #### <a id="deprecated-3"></a>Deprecated
    
    Retained only for one-shot legacy importers.
    
*   ##### <a id="write"></a>write: (path: string, content: string) \=> Promise<void\>
    
    #### <a id="deprecated-4"></a>Deprecated
    
    Retained only for one-shot legacy importers.
    
*   ##### <a id="writebinary"></a>writeBinary: (path: string, content: Uint8Array) \=> Promise<void\>
    
    #### <a id="deprecated-5"></a>Deprecated
    
    Retained only for one-shot legacy importers.
