Detach the filesystem mounted at a guest path from a running sandbox. Returns 200 OK once the removal is persisted; the unmount applies asynchronously on the live sandbox.
Whether proxy traffic may wake the sandbox while suspended. Defaults to true on creation. Explicit resume does not change this setting, and copies inherit it. Check status separately to determine whether the sandbox is currently suspended.
Typed reason the sandbox terminated (e.g. FileSystemNotFound, FileSystemSnapshotNotFound, ImageNotFound, no_capacity when a max_pending_secs bound ran out while waiting for a host, cancelled when a pending sandbox was deleted). Present on failed terminations.
Optional diagnosis for termination or a recoverable resume failure. An accepted explicit resume clears the previous diagnosis. Inspect status rather than classifying failure from this text.
Retained checkpoint ID. A recoverable resume failure preserves the original checkpoint for an explicit retry.
Was this page helpful?
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Tensorlake","colors":{"primary":"#047857","light":"#047857","dark":"#0D1117"},"logo":{"light":"https://mintcdn.com/tensorlake-35e9e726/pfTs6FweN5gDe2IY/logo/TL-Light.svg?fit=max\u0026auto=format\u0026n=pfTs6FweN5gDe2IY\u0026q=85\u0026s=de3c3b6e814425b1be6902f8af88b719","dark":"https://mintcdn.com/tensorlake-35e9e726/pfTs6FweN5gDe2IY/logo/TL-Dark.svg?fit=max\u0026auto=format\u0026n=pfTs6FweN5gDe2IY\u0026q=85\u0026s=b08c049d9fabd32c205f6e8d9f621ba3"},"favicon":"https://mintcdn.com/tensorlake-35e9e726/fVE8-oNRlpqs-U2A/logo/favicon.png?fit=max\u0026auto=format\u0026n=fVE8-oNRlpqs-U2A\u0026q=85\u0026s=15a7031809c3f949e46d8b9c926c28f4","api":{"openapi":"api-reference/openapi.yaml","playground":{"display":"interactive"},"mdx":{"auth":{"method":"bearer"},"server":"https://api.tensorlake.ai/"}},"appearance":{"default":"system"},"navbar":{"links":[{"href":"https://tensorlake.ai/blog","label":"Blog"},{"href":"https://join.slack.com/t/tensorlakecloud/shared_invite/zt-32fq4nmib-gO0OM5RIar3zLOBm~ZGqKg","label":"Slack"},{"href":"https://github.com/tensorlakeai/tensorlake","label":"GitHub"}],"primary":{"type":"button","label":"Dashboard","href":"https://cloud.tensorlake.ai/login"}},"footer":{"socials":{"website":"https://www.tensorlake.ai/","x":"https://x.com/tensorlake","github":"https://github.com/tensorlakeai","linkedin":"https://linkedin.com/company/tensorlake","bluesky":"https://bsky.app/profile/tensorlake.bsky.social"}},"seo":{"metatags":{"og:type":"website","og:site_name":"Tensorlake Documentation","og:title":"Tensorlake Documentation","og:description":"Build with Tensorlake: secure and stateful sandboxes for AI agents, durable orchestration for long-running workflows","og:url":"https://docs.tensorlake.ai","og:locale":"en_US","twitter:card":"summary_large_image","twitter:site":"@tensorlake","twitter:creator":"@tensorlake","twitter:title":"Tensorlake Documentation","twitter:description":"Sandboxes and orchestration for AI agents.","og:image":"https://docs.tensorlake.ai/images/og-preview.png","og:image:width":"2400","og:image:height":"1260","twitter:image":"https://docs.tensorlake.ai/images/og-preview.png","description":"Tensorlake Documentation— secure and stateful sandboxes for AI agents, durable workflow orchestration for long-running workflows, covers in Python and TypeScript SDKs plus CLI","keywords":"AI agents, sandboxes, stateful sandboxes, durable execution, agent orchestration, agentic workflows","author":"Tensorlake","robots":"index, follow, max-image-preview:large, max-snippet:-1","googlebot":"index, follow"},"indexing":"all"},"fonts":{"family":"Inter"},"integrations":{"ga4":{"measurementId":"G-EBFHHWKKQM"}},"contextual":{"options":["claude","chatgpt","cursor","grok","copy","view"],"display":"header"},"styling":{"latex":true},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"tensorlake-35e9e726","hasAudioNarration":false,"actualSubdomain":"tensorlake-35e9e726","customDomains":["docs.tensorlake.ai"],"gitSource":{"type":"github","owner":"tensorlakeai","repo":"docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"feedback":{"thumbs":true,"edits":true,"issues":true},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6aecf5ffcaa1870951856cdf","clientVersion":"0.0.4087","searchFilterCounts":[{"language":"default","tag":"Sandboxes","count":90},{"language":"default","tag":"API Reference","count":48},{"language":"default","tag":"Guides","count":41},{"language":"default","tag":"Overview","count":25},{"language":"default","tag":"Orchestrate","count":24},{"language":"default","tag":"Use Cases","count":23},{"language":"default","tag":"Process Management","count":15},{"language":"default","tag":"Life Cycle Management","count":13},{"language":"default","tag":"Platform Features","count":13},{"language":"default","tag":"Cloud Volumes","count":9}]},"assistantConfig":{},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"api-reference/v2/sandboxes/detach-filesystem","slug":"/api-reference/v2/sandboxes/detach-filesystem","pageMetadata":{"title":"Detach Filesystem","openapi":"delete /sandboxes/{sandbox_id}/file_systems","og:image":"https://docs.tensorlake.ai/images/og/api-reference-v2-sandboxes-detach-filesystem.png","twitter:image":"https://docs.tensorlake.ai/images/og/api-reference-v2-sandboxes-detach-filesystem.png","description":"Detach the filesystem mounted at a guest path from a running sandbox. Returns `200 OK` once the removal is persisted; the unmount applies asynchronously on the live sandbox.","href":"/api-reference/v2/sandboxes/detach-filesystem"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n code: \"code\",\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_components.p, {\n children: [\"Detach the filesystem mounted at a guest path from a running sandbox. Returns \", _jsx(_components.code, {\n children: \"200 OK\"\n }), \" once the removal is persisted; the unmount applies asynchronously on the live sandbox.\"]\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,li:`li`,p:`p`,ul:`ul`,..._provideComponents(),...props.components};return _jsxs(_Fragment,{children:[_jsxs(_components.p,{children:[`Detach the `,_jsx(_components.a,{href:`/sandboxes/mount-filesystems`,children:`filesystem`}),` mounted at a guest path from a running sandbox.`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`This path accepts either the sandbox ID or the sandbox name.`}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`200 OK`}),` means the removal is persisted; the unmount applies asynchronously on the live sandbox moments later.`]}),`\n`,_jsxs(_components.li,{children:[`Tensorlake returns `,_jsx(_components.code,{children:`404 Not Found`}),` when no filesystem is mounted at the given path.`]}),`\n`,_jsxs(_components.li,{children:[`Tensorlake returns `,_jsx(_components.code,{children:`409 Conflict`}),` when the sandbox is not running.`]}),`\n`]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Detach Filesystem","openapi":"delete /sandboxes/{sandbox_id}/file_systems","og:image":"https://docs.tensorlake.ai/images/og/api-reference-v2-sandboxes-detach-filesystem.png","twitter:image":"https://docs.tensorlake.ai/images/og/api-reference-v2-sandboxes-detach-filesystem.png","description":"Detach the filesystem mounted at a guest path from a running sandbox. Returns `200 OK` once the removal is persisted; the unmount applies asynchronously on the live sandbox.","href":"/api-reference/v2/sandboxes/detach-filesystem"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":["/_mintlify/custom/tensorlake-35e9e726/1373ae293ad67675/plausible.js"],"openApiReferenceData":{"operation":{"tags":["sandboxes"],"summary":"Detach a filesystem","description":"Detach the filesystem mounted at a guest path from a running sandbox. Returns `200 OK` once the removal is persisted; the unmount applies asynchronously on the live sandbox.","operationId":"detach_file_system","requestBody":"6e0d126a-e3a7-4636-9f77-f95f9c216b29","responses":{"200":"c53b56bc-9daf-47e9-b461-d61c114a03a0","400":"23f6b5bf-ae03-4ec4-95ab-317a4214e7cb","401":"c1ba4fa5-2be5-43af-a664-9b26e5479f77","403":"e22e7abf-59c1-472c-8f48-e04a663228a2","404":"35dcccf8-1d35-4a86-952e-e7fdf80be586","409":"027285ac-c781-405f-817e-15e12b5cd21c","500":"81094f75-9a0b-4d84-ab9f-032fe923468b"},"method":"delete","type":"path","servers":["04da1a97-9ddd-4cf2-9288-7addbccb3159"],"security":["025c894d-b1a2-4786-81ba-c0d9c07e2515"],"path":"/sandboxes/{sandbox_id}/file_systems","baseUrlOptions":["https://api.tensorlake.ai/"],"title":"Detach a filesystem","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"c3ac3070-dea0-4e49-b53f-891cd3dbf121":{"name":"sandbox_id","in":"path","description":"The sandbox ID or sandbox name.","required":true,"schema":{"type":"string","isRequired":true,"description":"The sandbox ID or sandbox name.","uniqueKey":"","typeLabel":"string"}}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","required":["mount_path"],"properties":{"mount_path":{"type":"string","description":"Absolute guest mount path of the filesystem to detach.","isRequired":true,"uniqueKey":"mount_path","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"mount_path":"\u003cstring>"}}},"exampleType":"generated"}},"required":true,"exampleType":"generated"},"responses":{"c53b56bc-9daf-47e9-b461-d61c114a03a0":{"description":"Filesystem detach accepted and persisted; the returned sandbox no longer lists the `file_systems` entry","content":{"application/json":{"schema":{"type":"object","required":["id","namespace","status","created_at","resources","timeout_secs","allow_unauthenticated_access","auto_resume"],"properties":{"auto_resume":{"type":"boolean","description":"Whether proxy traffic may wake the sandbox while suspended. Defaults to true on creation. Explicit resume does not change this setting, and copies inherit it. Check status separately to determine whether the sandbox is currently suspended.","isRequired":true,"uniqueKey":"auto_resume","typeLabel":"boolean"},"id":{"type":"string","isRequired":true,"uniqueKey":"id","typeLabel":"string"},"namespace":{"type":"string","isRequired":true,"uniqueKey":"namespace","typeLabel":"string"},"status":{"type":"string","enum":["pending","running","snapshotting","suspending","suspended","terminated","resume_failed"],"isRequired":true,"uniqueKey":"status","typeLabel":"enum\u003cstring>"},"created_at":{"type":"integer","format":"int64","description":"Milliseconds since Unix epoch.","isRequired":true,"uniqueKey":"created_at","typeLabel":"integer\u003cint64>"},"resources":{"type":"object","required":["cpus","memory_mb","disk_mb"],"properties":{"cpus":{"type":"number","format":"double","description":"CPU allocation in cores.","isRequired":true,"uniqueKey":"resources.cpus","typeLabel":"number\u003cdouble>"},"memory_mb":{"type":"integer","format":"int64","description":"Memory allocation in MiB.","isRequired":true,"uniqueKey":"resources.memory_mb","typeLabel":"integer\u003cint64>"},"disk_mb":{"type":"integer","format":"int64","description":"Ephemeral root filesystem size in MiB.","isRequired":true,"uniqueKey":"resources.disk_mb","typeLabel":"integer\u003cint64>"}},"isRequired":true,"uniqueKey":"resources","typeLabel":"object"},"timeout_secs":{"type":"integer","format":"int64","isRequired":true,"uniqueKey":"timeout_secs","typeLabel":"integer\u003cint64>"},"allow_unauthenticated_access":{"type":"boolean","description":"Whether sandbox ingress may route requests without auth validation.","isRequired":true,"uniqueKey":"allow_unauthenticated_access","typeLabel":"boolean"},"image":{"type":"string","uniqueKey":"image","typeLabel":"string"},"pending_reason":{"oneOf":[{"type":"string","description":"Present when `status` is `pending`.","uniqueKey":"pending_reason.oneOf.0","typeLabel":"string"},{"type":"null","description":"Present when `status` is `pending`.","uniqueKey":"pending_reason.oneOf.1","typeLabel":"null"}],"uniqueKey":"pending_reason","typeLabel":"string | null"},"outcome":{"oneOf":[{"type":"string","description":"Platform-specific termination outcome string returned for completed sandboxes.","uniqueKey":"outcome.oneOf.0","typeLabel":"string"},{"type":"null","description":"Platform-specific termination outcome string returned for completed sandboxes.","uniqueKey":"outcome.oneOf.1","typeLabel":"null"}],"uniqueKey":"outcome","typeLabel":"string | null"},"termination_reason":{"oneOf":[{"type":"string","description":"Typed reason the sandbox terminated (e.g. `FileSystemNotFound`, `FileSystemSnapshotNotFound`, `ImageNotFound`, `no_capacity` when a `max_pending_secs` bound ran out while waiting for a host, `cancelled` when a pending sandbox was deleted). Present on failed terminations.","uniqueKey":"termination_reason.oneOf.0","typeLabel":"string"},{"type":"null","description":"Typed reason the sandbox terminated (e.g. `FileSystemNotFound`, `FileSystemSnapshotNotFound`, `ImageNotFound`, `no_capacity` when a `max_pending_secs` bound ran out while waiting for a host, `cancelled` when a pending sandbox was deleted). Present on failed terminations.","uniqueKey":"termination_reason.oneOf.1","typeLabel":"null"}],"uniqueKey":"termination_reason","typeLabel":"string | null"},"error_details":{"oneOf":[{"type":"string","description":"Optional diagnosis for termination or a recoverable resume failure. An accepted explicit resume clears the previous diagnosis. Inspect status rather than classifying failure from this text.","uniqueKey":"error_details.oneOf.0","typeLabel":"string"},{"type":"null","description":"Optional diagnosis for termination or a recoverable resume failure. An accepted explicit resume clears the previous diagnosis. Inspect status rather than classifying failure from this text.","uniqueKey":"error_details.oneOf.1","typeLabel":"null"}],"uniqueKey":"error_details","typeLabel":"string | null"},"container_id":{"oneOf":[{"type":"string","uniqueKey":"container_id.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"container_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"container_id","typeLabel":"string | null"},"executor_id":{"oneOf":[{"type":"string","uniqueKey":"executor_id.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"executor_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"executor_id","typeLabel":"string | null"},"ingress_endpoint":{"oneOf":[{"type":"string","description":"Canonical server-provided base for sandbox-specific ingress.","uniqueKey":"ingress_endpoint.oneOf.0","typeLabel":"string"},{"type":"null","description":"Canonical server-provided base for sandbox-specific ingress.","uniqueKey":"ingress_endpoint.oneOf.1","typeLabel":"null"}],"uniqueKey":"ingress_endpoint","typeLabel":"string | null"},"sandbox_url":{"oneOf":[{"type":"string","description":"Sandbox-specific management URL derived from `ingress_endpoint`.","uniqueKey":"sandbox_url.oneOf.0","typeLabel":"string"},{"type":"null","description":"Sandbox-specific management URL derived from `ingress_endpoint`.","uniqueKey":"sandbox_url.oneOf.1","typeLabel":"null"}],"uniqueKey":"sandbox_url","typeLabel":"string | null"},"pool_id":{"oneOf":[{"type":"string","uniqueKey":"pool_id.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"pool_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"pool_id","typeLabel":"string | null"},"network_policy":{"oneOf":[{"type":"null","description":"Egress network policy currently applied to the sandbox. `null` when egress is unrestricted.","uniqueKey":"network_policy.oneOf.0","typeLabel":"null"},{"type":"object","description":"Egress network policy currently applied to the sandbox. `null` when egress is unrestricted.","properties":{"allow_internet_access":{"type":"boolean","default":true,"description":"Allows internet access, including DNS requests. If false, all outbound traffic except destinations in allow_out is blocked, including DNS requests. If allow_out is non-empty and this is true, only the listed destinations and DNS requests are allowed.","uniqueKey":"network_policy.oneOf.1.allow_internet_access","typeLabel":"boolean"},"allow_out":{"type":"array","description":"Allowed domains, IPv4 addresses, or IPv4 CIDRs. A non-empty list allows the listed destinations and DNS requests when allow_internet_access is true. Hostname rules are followed across DNS changes. A destination also matched by deny_out is blocked.","items":{"type":"string","uniqueKey":"network_policy.oneOf.1.allow_out.items.[INDEX]","typeLabel":"string"},"uniqueKey":"network_policy.oneOf.1.allow_out","typeLabel":"string[]"},"deny_out":{"type":"array","description":"Denied domains, IPv4 addresses, or IPv4 CIDRs. Takes precedence over allow_out; a destination matched by both is blocked.","items":{"type":"string","uniqueKey":"network_policy.oneOf.1.deny_out.items.[INDEX]","typeLabel":"string"},"uniqueKey":"network_policy.oneOf.1.deny_out","typeLabel":"string[]"}},"uniqueKey":"network_policy.oneOf.1","typeLabel":"object"}],"uniqueKey":"network_policy","typeLabel":"null | object"},"exposed_ports":{"oneOf":[{"type":"array","items":{"type":"integer","format":"int32","minimum":1,"maximum":65535,"uniqueKey":"exposed_ports.oneOf.0.items.[INDEX]","typeLabel":"integer\u003cint32>"},"description":"Additional routable ingress ports. When `null`, only the management port `9501` is routable.","uniqueKey":"exposed_ports.oneOf.0","typeLabel":"integer\u003cint32>[]"},{"type":"null","items":{"type":"integer","format":"int32","minimum":1,"maximum":65535},"description":"Additional routable ingress ports. When `null`, only the management port `9501` is routable.","uniqueKey":"exposed_ports.oneOf.1","typeLabel":"null"}],"uniqueKey":"exposed_ports","typeLabel":"integer\u003cint32>[] | null"},"template_id":{"oneOf":[{"type":"string","uniqueKey":"template_id.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"template_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"template_id","typeLabel":"string | null"},"name":{"oneOf":[{"type":"string","uniqueKey":"name.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"name.oneOf.1","typeLabel":"null"}],"uniqueKey":"name","typeLabel":"string | null"},"file_systems":{"type":"array","description":"Filesystems currently mounted into the sandbox.","items":{"type":"object","required":["file_system_id","mount_path"],"properties":{"file_system_id":{"type":"string","description":"Filesystem name within the project — the name created with `tl fs create \u003cname>`. ASCII letters, digits, `_`, and `-` only.","isRequired":true,"uniqueKey":"file_systems.items.[INDEX].file_system_id","typeLabel":"string"},"mount_path":{"type":"string","description":"Absolute guest mount path (e.g. `/mnt/skills`). Must not be `/` or contain `..`; paths are normalized, and mount paths must be unique and non-nested within the sandbox.","isRequired":true,"uniqueKey":"file_systems.items.[INDEX].mount_path","typeLabel":"string"},"read_only":{"type":"boolean","default":false,"description":"Mount the filesystem read-only. Writes inside the guest fail with `EROFS`; the mount's storage credential carries no write scope. Fail-closed — sandboxes requesting read-only mounts are only placed on fleets that can enforce them.","uniqueKey":"file_systems.items.[INDEX].read_only","typeLabel":"boolean"},"prefetch":{"type":"boolean","default":false,"description":"Download the filesystem's full tree in the background after the mount is ready. The mount is usable immediately with lazy reads meanwhile. Best-effort — never blocks or fails the sandbox, and older fleets skip it silently.","uniqueKey":"file_systems.items.[INDEX].prefetch","typeLabel":"boolean"},"snapshot_id":{"type":"string","description":"Pin the mount to a permanent snapshot of the filesystem (created with `tl fs snapshot` or a message-bearing `tl fs push`; ids listed by `tl fs history`). A pinned mount serves exactly that snapshot and never follows the live filesystem head. Requires `read_only` to be `true` — a `snapshot_id` without `read_only` is rejected with `400`. Pinning an id that is not a permanent snapshot of the filesystem fails the sandbox with `termination_reason` `FileSystemSnapshotNotFound`. Omit for an unpinned mount that follows the live filesystem; responses omit the field for unpinned mounts.","uniqueKey":"file_systems.items.[INDEX].snapshot_id","typeLabel":"string"}},"uniqueKey":"file_systems.items.[INDEX]","typeLabel":"object"},"uniqueKey":"file_systems","typeLabel":"object[]"},"snapshot_id":{"oneOf":[{"type":"string","description":"Retained checkpoint ID. A recoverable resume failure preserves the original checkpoint for an explicit retry.","uniqueKey":"snapshot_id.oneOf.0","typeLabel":"string"},{"type":"null","description":"Retained checkpoint ID. A recoverable resume failure preserves the original checkpoint for an explicit retry.","uniqueKey":"snapshot_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"snapshot_id","typeLabel":"string | null"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"auto_resume":true,"id":"\u003cstring>","namespace":"\u003cstring>","status":"pending","created_at":123,"resources":{"cpus":123,"memory_mb":123,"disk_mb":123},"timeout_secs":123,"allow_unauthenticated_access":true,"image":"\u003cstring>","pending_reason":"\u003cstring>","outcome":"\u003cstring>","termination_reason":"\u003cstring>","error_details":"\u003cstring>","container_id":"\u003cstring>","executor_id":"\u003cstring>","ingress_endpoint":"\u003cstring>","sandbox_url":"\u003cstring>","pool_id":"\u003cstring>","network_policy":{"allow_internet_access":true,"allow_out":["\u003cstring>"],"deny_out":["\u003cstring>"]},"exposed_ports":[32768],"template_id":"\u003cstring>","name":"\u003cstring>","file_systems":[{"file_system_id":"\u003cstring>","mount_path":"\u003cstring>","read_only":false,"prefetch":false,"snapshot_id":"\u003cstring>"}],"snapshot_id":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"},"23f6b5bf-ae03-4ec4-95ab-317a4214e7cb":{"description":"Invalid mount path","content":{"text/plain":{}},"exampleType":"generated"},"c1ba4fa5-2be5-43af-a664-9b26e5479f77":{"description":"Unauthorized. Invalid or missing credentials","content":{"_mintlify/placeholder":{"schema":{"type":"object","description":""}}}},"e22e7abf-59c1-472c-8f48-e04a663228a2":{"description":"Forbidden. You do not have permission to access this resource","content":{"_mintlify/placeholder":{"schema":{"type":"object","description":""}}}},"35dcccf8-1d35-4a86-952e-e7fdf80be586":{"description":"Sandbox not found, or no filesystem is mounted at the given path","content":{"text/plain":{}},"exampleType":"generated"},"027285ac-c781-405f-817e-15e12b5cd21c":{"description":"Sandbox is not running","content":{"text/plain":{}},"exampleType":"generated"},"81094f75-9a0b-4d84-ab9f-032fe923468b":{"description":"Internal server error","content":{"text/plain":{}},"exampleType":"generated"}},"security":{"025c894d-b1a2-4786-81ba-c0d9c07e2515":{"bearerAuth":{"type":"http","scheme":"bearer","scopes":[],"schemeName":"bearerAuth"}}},"servers":{"04da1a97-9ddd-4cf2-9288-7addbccb3159":{"url":"https://api.tensorlake.ai/"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"http","scheme":"bearer","scopes":[],"schemeName":"bearerAuth"},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"Bearer authentication header of the form `Bearer \u003ctoken>`, where `\u003ctoken>` is your auth token.","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"bearerAuth","name":"Authorization"}],"title":"bearerAuth"}]},"originalFileLocation":"api-reference/openapi.yaml"},"subdomain":"tensorlake-35e9e726","siteName":"Tensorlake","title":"Tensorlake Documentation","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-08-19T06:54:09.531Z","originalFileLocation":"api-reference/v2/sandboxes/detach-filesystem.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Detach the filesystem mounted at a guest path from a running sandbox. Returns 200 OK once the removal is persisted; the unmount applies asynchronously on the live sandbox.\">\u003cmeta data-mint-head name=\"keywords\" content=\"AI agents, sandboxes, stateful sandboxes, durable execution, agent orchestration, agentic workflows\">\u003cmeta data-mint-head name=\"application-name\" content=\"Tensorlake\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003cmeta data-mint-head name=\"robots\" content=\"index, follow, max-image-preview:large, max-snippet:-1\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/tensorlake-35e9e726/jzD554Nmq8Zqors6/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/tensorlake-35e9e726/jzD554Nmq8Zqors6/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/tensorlake-35e9e726/jzD554Nmq8Zqors6/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/tensorlake-35e9e726/jzD554Nmq8Zqors6/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/tensorlake-35e9e726/jzD554Nmq8Zqors6/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/tensorlake-35e9e726/jzD554Nmq8Zqors6/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/tensorlake-35e9e726/jzD554Nmq8Zqors6/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/tensorlake-35e9e726/jzD554Nmq8Zqors6/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/tensorlake-35e9e726/jzD554Nmq8Zqors6/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Tensorlake Documentation\">\u003cmeta data-mint-head property=\"og:description\" content=\"Build with Tensorlake: secure and stateful sandboxes for AI agents, durable orchestration for long-running workflows\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Tensorlake Documentation\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.tensorlake.ai/api-reference/v2/sandboxes/detach-filesystem\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://docs.tensorlake.ai/images/og/api-reference-v2-sandboxes-detach-filesystem.png\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Tensorlake Documentation\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Sandboxes and orchestration for AI agents.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://docs.tensorlake.ai/images/og/api-reference-v2-sandboxes-detach-filesystem.png\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/tensorlake-35e9e726/jzD554Nmq8Zqors6/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Tensorlake\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#047857\">\u003cmeta data-mint-head name=\"og:locale\" content=\"en_US\">\u003cmeta data-mint-head name=\"twitter:creator\" content=\"@tensorlake\">\u003cmeta data-mint-head name=\"author\" content=\"Tensorlake\">\u003cmeta data-mint-head name=\"googlebot\" content=\"index, follow\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.tensorlake.ai/api-reference/v2/sandboxes/detach-filesystem\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/v2/sandboxes/detach-filesystem.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.tensorlake.ai/#organization\",\"name\":\"Tensorlake\",\"url\":\"https://docs.tensorlake.ai\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/tensorlake-35e9e726/pfTs6FweN5gDe2IY/logo/TL-Light.svg?fit=max\u0026auto=format\u0026n=pfTs6FweN5gDe2IY\u0026q=85\u0026s=de3c3b6e814425b1be6902f8af88b719\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.tensorlake.ai#website\",\"name\":\"Tensorlake\",\"url\":\"https://docs.tensorlake.ai\",\"publisher\":{\"@id\":\"https://docs.tensorlake.ai/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.tensorlake.ai/api-reference/v2/sandboxes/detach-filesystem#webpage\",\"url\":\"https://docs.tensorlake.ai/api-reference/v2/sandboxes/detach-filesystem\",\"name\":\"Detach Filesystem\",\"description\":\"Detach the filesystem mounted at a guest path from a running sandbox. Returns 200 OK once the removal is persisted; the unmount applies asynchronously on the live sandbox.\",\"dateModified\":\"2026-08-19T06:54:09.531Z\",\"isPartOf\":{\"@id\":\"https://docs.tensorlake.ai#website\"},\"breadcrumb\":{\"@id\":\"https://docs.tensorlake.ai/api-reference/v2/sandboxes/detach-filesystem#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.tensorlake.ai/api-reference/v2/sandboxes/detach-filesystem#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Sandboxes\",\"item\":\"https://docs.tensorlake.ai/api-reference/v2/sandboxes/create\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Life Cycle Management\",\"item\":\"https://docs.tensorlake.ai/api-reference/v2/sandboxes/create\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Detach Filesystem\",\"item\":\"https://docs.tensorlake.ai/api-reference/v2/sandboxes/detach-filesystem\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.tensorlake.ai/api-reference/v2/sandboxes/detach-filesystem#apireference\",\"headline\":\"Detach Filesystem\",\"name\":\"Detach Filesystem\",\"description\":\"Detach the filesystem mounted at a guest path from a running sandbox. Returns 200 OK once the removal is persisted; the unmount applies asynchronously on the live sandbox.\",\"url\":\"https://docs.tensorlake.ai/api-reference/v2/sandboxes/detach-filesystem\",\"mainEntityOfPage\":{\"@id\":\"https://docs.tensorlake.ai/api-reference/v2/sandboxes/detach-filesystem#webpage\"},\"image\":\"https://docs.tensorlake.ai/images/og/api-reference-v2-sandboxes-detach-filesystem.png\",\"dateModified\":\"2026-08-19T06:54:09.531Z\",\"publisher\":{\"@id\":\"https://docs.tensorlake.ai/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.tensorlake.ai#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Tensorlake\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Tensorlake","nav":{"global":null,"tabs":[{"tab":"Sandboxes","pages":[{"title":"Sandboxes","href":"/sandboxes/introduction"}]},{"tab":"GitHub Actions","pages":[{"title":"GitHub Actions","href":"/github-actions/quickstart"}]},{"tab":"Cloud Volumes","pages":[{"title":"Cloud Volumes","href":"/filesystems/introduction"}]},{"tab":"Git Repositories","pages":[{"title":"Git Repositories","href":"/git/introduction"}]},{"tab":"Orchestrate","pages":[{"title":"Orchestrate","href":"/applications/introduction"}]},{"tab":"Platform Features","pages":[{"title":"Platform Features","href":"/platform/authentication"}]},{"tab":"API Reference","groups":[{"group":"API Documentation","pages":[{"title":"Introduction","href":"/api-reference/v2/introduction"}]},{"group":"Sandboxes","pages":[{"group":"Life Cycle Management","pages":[{"title":"Create Sandbox","openapi":"post /sandboxes","href":"/api-reference/v2/sandboxes/create"},{"title":"List sandboxes","sidebarTitle":"List Sandboxes","openapi":"get /sandboxes","href":"/api-reference/v2/sandboxes/list"},{"title":"Get Sandbox","openapi":"get /sandboxes/{sandbox_id}","href":"/api-reference/v2/sandboxes/get"},{"title":"Update Sandbox","openapi":"patch /sandboxes/{sandbox_id}","href":"/api-reference/v2/sandboxes/update"},{"title":"Delete Sandbox","openapi":"delete /sandboxes/{sandbox_id}","href":"/api-reference/v2/sandboxes/delete"},{"title":"Snapshot Sandbox","openapi":"post /sandboxes/{sandbox_id}/snapshot","href":"/api-reference/v2/sandboxes/snapshot"},{"title":"Copy Sandbox","openapi":"post /sandboxes/{sandbox_id}/copy","href":"/api-reference/v2/sandboxes/copy"},{"title":"Restore Sandbox","openapi":"post /sandboxes","href":"/api-reference/v2/sandboxes/restore"},{"title":"Suspend Sandbox","openapi":"post /sandboxes/{sandbox_id}/suspend","href":"/api-reference/v2/sandboxes/suspend"},{"title":"Resume Sandbox","openapi":"post /sandboxes/{sandbox_id}/resume","href":"/api-reference/v2/sandboxes/resume"},{"title":"Restart Sandbox","openapi":"post /sandboxes/{sandbox_id}/restart","href":"/api-reference/v2/sandboxes/restart"},{"title":"Attach Filesystem","openapi":"post /sandboxes/{sandbox_id}/file_systems","description":"Attach a filesystem to a running sandbox at an absolute guest mount path. Returns `200 OK` once the mount is persisted; the mount applies asynchronously on the live sandbox. If the mount later cannot converge — including a `file_system_id` that does not exist, or a pinned `snapshot_id` that is not a permanent snapshot of the filesystem — the sandbox is terminated fail-closed with `termination_reason` and `error_details` on the sandbox object, so verify the filesystem exists (for example with `tl fs ls`) and the snapshot is listed by `tl fs history` before attaching.","href":"/api-reference/v2/sandboxes/attach-filesystem"},{"title":"Detach Filesystem","openapi":"delete /sandboxes/{sandbox_id}/file_systems","href":"/api-reference/v2/sandboxes/detach-filesystem"}]},{"group":"Process Management","pages":[{"title":"Sandbox Processes API Overview","sidebarTitle":"Overview","description":"Manage sandbox processes through the sandbox proxy.","href":"/api-reference/v2/processes/introduction"},{"title":"Start Process","openapi":"post /api/v1/processes","href":"/api-reference/v2/processes/start"},{"title":"Run Process","openapi":"post /api/v1/processes/run","href":"/api-reference/v2/processes/run"},{"title":"List Processes","openapi":"get /api/v1/processes","href":"/api-reference/v2/processes/list"},{"title":"Get Process","openapi":"get /api/v1/processes/{pid}","href":"/api-reference/v2/processes/get"},{"title":"Kill Process","openapi":"delete /api/v1/processes/{pid}","href":"/api-reference/v2/processes/kill"},{"title":"Send Signal","openapi":"post /api/v1/processes/{pid}/signal","href":"/api-reference/v2/processes/signal"},{"title":"Process Stdin","openapi":"post /api/v1/processes/{pid}/stdin","href":"/api-reference/v2/processes/stdin"},{"title":"Close Process Stdin","openapi":"post /api/v1/processes/{pid}/stdin/close","href":"/api-reference/v2/processes/close-stdin"},{"title":"Get Process Stdout","openapi":"get /api/v1/processes/{pid}/stdout","href":"/api-reference/v2/processes/stdout"},{"title":"Get Process Stderr","openapi":"get /api/v1/processes/{pid}/stderr","href":"/api-reference/v2/processes/stderr"},{"title":"Get Process Output","openapi":"get /api/v1/processes/{pid}/output","href":"/api-reference/v2/processes/output"},{"title":"Follow Process Stdout","openapi":"get /api/v1/processes/{pid}/stdout/follow","href":"/api-reference/v2/processes/follow-stdout"},{"title":"Follow Process Stderr","openapi":"get /api/v1/processes/{pid}/stderr/follow","href":"/api-reference/v2/processes/follow-stderr"},{"title":"Follow Process Output","openapi":"get /api/v1/processes/{pid}/output/follow","href":"/api-reference/v2/processes/follow-output"}]},{"group":"Runtime Metadata","pages":[{"title":"Runtime Health","openapi":"get /api/v1/health","href":"/api-reference/v2/runtime/health"},{"title":"Runtime Info","openapi":"get /api/v1/info","href":"/api-reference/v2/runtime/info"},{"title":"Get resource usage","sidebarTitle":"Get Resource Usage","openapi":"get /api/v1/resource-usage","href":"/api-reference/v2/runtime/resource-usage"}]},{"group":"File Management","pages":[{"title":"Sandbox Files API Overview","sidebarTitle":"Overview","href":"/api-reference/v2/sandbox-files/introduction"},{"title":"Read File","openapi":"get /api/v1/files","href":"/api-reference/v2/sandbox-files/read"},{"title":"Write File","openapi":"put /api/v1/files","href":"/api-reference/v2/sandbox-files/write"},{"title":"Delete File","openapi":"delete /api/v1/files","href":"/api-reference/v2/sandbox-files/delete"},{"title":"List Directory","openapi":"get /api/v1/files/list","href":"/api-reference/v2/sandbox-files/list"}]},{"group":"PTY Sessions","pages":[{"title":"Sandbox PTY API Overview","sidebarTitle":"Overview","href":"/api-reference/v2/pty/introduction"},{"title":"Create PTY Session","openapi":"post /api/v1/pty","href":"/api-reference/v2/pty/create"},{"title":"List PTY Sessions","openapi":"get /api/v1/pty","href":"/api-reference/v2/pty/list"},{"title":"Get PTY Session","openapi":"get /api/v1/pty/{session_id}","href":"/api-reference/v2/pty/get"},{"title":"Resize PTY Session","openapi":"post /api/v1/pty/{session_id}/resize","href":"/api-reference/v2/pty/resize"},{"title":"Attach PTY WebSocket","openapi":"get /api/v1/pty/{session_id}/ws","href":"/api-reference/v2/pty/websocket"},{"title":"Kill PTY Session","openapi":"delete /api/v1/pty/{session_id}","href":"/api-reference/v2/pty/kill"}]},{"group":"TCP Tunnels","pages":[{"title":"TCP Tunnel WebSocket","openapi":"get /api/v1/tunnels/tcp","href":"/api-reference/v2/tunnels/tcp"}]},{"group":"SSH Lifecycle","pages":[{"title":"SSH Status","openapi":"get /api/v1/ssh/status","href":"/api-reference/v2/ssh/status"},{"title":"Enable SSH","openapi":"post /api/v1/ssh/enable","href":"/api-reference/v2/ssh/enable"},{"title":"Disable SSH","openapi":"post /api/v1/ssh/disable","href":"/api-reference/v2/ssh/disable"}]}]}]},{"tab":"FAQ","pages":[{"title":"FAQ","href":"/faqs/sandboxes-faq"}]}]},"basePath":"","title":"Tensorlake Documentation","buildId":"dpl_FWZhTb2vab28gFGFH4ojka6qEznQ","deploymentId":"dpl_FWZhTb2vab28gFGFH4ojka6qEznQ","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-CBsVopKK.js","utils-DZAk68jJ.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-D32AYZrP.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-D_A5_cny.js","snippetPresets-xNRfS9th.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","conditional-requirements-CFM0id0Q.js","ApiExamples-BIB25-tq.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-CydJ4w4j.js","shallow-CYPBeQSG.js","getApiPlaygroundDisplay-A5xJVBOu.js","CodeSnippet-BVRTgi3m.js","CodeSnippets-DjD6BSlt.js","Page-Dr40SSJq.js","getPastedJson-D4V4JyrR.js","icon-uhcnG22T.js","MethodPill-CM-ZQdGH.js","DuplicateIcon-B_WnOiNf.js","createIcon-CJsb8utt.js","DynamicMarkdown-D-2HDKEp.js","SectionHeading-KP5xmMgQ.js","axios-vUo_bRtp.js","Markdown-D_k0dg6k.js","clsx-DK3K4Z1S.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-DE3EVdvd.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-fN9H9n9g.js"]}