Create or replace a named permissions profile in the running workspace. Existing sessions keep their current permissions until explicitly updated. This does not change the saved workspace configuration.
Permissions and initial settings for a session. Unspecified settings add no restrictions beyond the workspace configuration.
Use commands, paths, and mounts to control access, and policy for custom rules. For command rules without paths, deny takes precedence over approval requests and allow rules. More specific path rules take precedence over broader rules. See permissions profiles for rule examples.
Control which paths a session can access. hide makes matching paths appear not to exist. show exposes more specific paths inside hidden regions, optionally with reduced permissions. Exact paths include their descendants; patterns support *, ?, and character classes.
Command access rules. allow restricts available commands to matching patterns. ask requires approval, and deny blocks matching commands with a reason. If allow is omitted, it adds no restriction.
Control which processes a session can list or stop, and the maximum number it can run. Sessions always have access to their own processes. The stop scope cannot exceed the list scope. Profile settings override workspace defaults.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Mirage","description":"Mirage gives AI agents one virtual filesystem for S3, Google Drive, Slack, GitHub, Notion, Postgres, and SSH, so shell commands work across services.","colors":{"primary":"#0C0C0C","light":"#FAFAFA","dark":"#000000"},"logo":{"light":"https://mintcdn.com/struktoai/7G-pGKhPIqaKqOXr/logo/light.svg?fit=max\u0026auto=format\u0026n=7G-pGKhPIqaKqOXr\u0026q=85\u0026s=d7007be7b5588a72b2072d2c33791785","dark":"https://mintcdn.com/struktoai/7G-pGKhPIqaKqOXr/logo/dark.svg?fit=max\u0026auto=format\u0026n=7G-pGKhPIqaKqOXr\u0026q=85\u0026s=0a255f925beb7370a41145f3f9185e9d"},"favicon":"https://mintcdn.com/struktoai/F9Lv_nTaj6By6crk/favicon.svg?fit=max\u0026auto=format\u0026n=F9Lv_nTaj6By6crk\u0026q=85\u0026s=bbca6fb54e64d72bdda46fb667828f1f","api":{"playground":{"display":"simple"},"examples":{"defaults":"all","languages":["curl","python","javascript"],"prefill":true}},"navbar":{"links":[{"icon":"globe","href":"https://www.strukto.ai/mirage","label":"mirage"},{"icon":"discord","href":"https://discord.gg/u8BPQ65KsS","label":""},{"icon":"x-twitter","href":"https://x.com/struktoai","label":""},{"icon":"github","href":"https://github.com/strukto-ai/mirage","label":"strukto-ai/mirage"}]},"footer":{"socials":{"github":"https://github.com/strukto-ai/mirage"}},"seo":{"metatags":{"keywords":"Mirage, filesystem for AI agents, virtual filesystem, AI agent tools, agent infrastructure, MCP alternative, bash for agents, S3 filesystem, Google Drive filesystem, Slack filesystem, GitHub filesystem, agent sandbox, Strukto","author":"Strukto","robots":"index, follow","googlebot":"index, follow","canonical":"https://docs.mirage.strukto.ai","theme-color":"#0C0C0C","color-scheme":"light dark","language":"en","category":"Technology","target":"developers","apple-mobile-web-app-capable":"yes","apple-mobile-web-app-status-bar-style":"black-translucent","og:type":"website","og:url":"https://docs.mirage.strukto.ai","og:image":"https://raw.githubusercontent.com/strukto-ai/mirage/main/assets/mirage-og-light@2x.png","og:image:alt":"Mirage: a virtual terminal for AI agents","og:site_name":"Mirage","og:locale":"en_US","twitter:card":"summary_large_image","twitter:site":"@struktoai","twitter:creator":"@struktoai","twitter:image":"https://raw.githubusercontent.com/strukto-ai/mirage/main/assets/mirage-og-light@2x.png","twitter:image:alt":"Mirage · A Virtual Terminal for AI Agents | Strukto"}},"contextual":{"options":["copy","view","chatgpt","claude","perplexity","mcp","cursor","vscode"],"display":"header"},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"struktoai","hasAudioNarration":false,"actualSubdomain":"struktoai","customDomains":["docs.mirage.strukto.ai"],"gitSource":{"type":"github","owner":"strukto-ai","repo":"mirage","deployBranch":"main","contentDirectory":"docs","isPrivate":true,"mountPath":"","label":""},"entitlements":{},"buildId":"6af1de9112241f5ef5b92709","clientVersion":"0.0.4094","searchFilterCounts":[{"language":"default","tag":"VFS","count":204},{"language":"default","tag":"Home","count":134},{"language":"default","tag":"TS","count":95},{"language":"default","tag":"API reference","count":94},{"language":"default","tag":"Python","count":91},{"language":"default","tag":"CLIs","count":79},{"language":"default","tag":"Workspaces","count":51},{"language":"default","tag":"Object Storage","count":48},{"language":"default","tag":"Configuration","count":37},{"language":"default","tag":"Cloud \u0026 Productivity","count":35}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-metadata","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"comment-mode","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[{"filePath":"custom.css","content":"#content-area:has(#api-playground-2-operation-page) #header>.prose{margin-top:1.5rem}"}],"page":{"pagePath":"api/operations/workspaces/set-profile","slug":"/api/operations/workspaces/set-profile","pageMetadata":{"title":"Set profile","description":"Create or replace a named permissions profile in the running workspace. Existing sessions keep their current permissions until explicitly updated. This does not change the saved workspace configuration.","deprecated":null,"version":null,"openapi":"/openapi.yaml put /v1/workspaces/{workspace_id}/profiles/{name}","href":"/api/operations/workspaces/set-profile","autogeneratedByOpenApi":true},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Create or replace a named permissions profile in the running workspace. Existing sessions keep their current permissions until explicitly updated. This does not change the saved workspace configuration.\"\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{jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,p:`p`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,..._provideComponents(),...props.components},{Accordion,Table}=_components;if(!Accordion)_missingMdxReference(`Accordion`,true);if(!Table)_missingMdxReference(`Table`,true);return _jsxs(Accordion,{title:`Errors`,id:`errors`,children:[_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Status`}),_jsx(_components.th,{children:`Meaning`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`401`})}),_jsx(_components.td,{children:`The token is missing or wrong`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`404`})}),_jsx(_components.td,{children:`The workspace, session, job or file does not exist`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`422`})}),_jsx(_components.td,{children:`Validation Error`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`429`})}),_jsx(_components.td,{children:`Past a rate limit, or a new session past max_sessions`})]})]})]}),_jsxs(_components.p,{children:[`See `,_jsx(_components.a,{href:`/api/errors`,children:`error examples and recovery steps`}),`. The `,_jsx(_components.a,{href:`https://github.com/strukto-ai/mirage/blob/main/docs/openapi.yaml`,children:`complete OpenAPI contract`}),` includes every response schema.`]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Set profile","description":"Create or replace a named permissions profile in the running workspace. Existing sessions keep their current permissions until explicitly updated. This does not change the saved workspace configuration.","deprecated":null,"version":null,"openapi":"/openapi.yaml put /v1/workspaces/{workspace_id}/profiles/{name}","href":"/api/operations/workspaces/set-profile","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"summary":"Set profile","operationId":"set_profile_v1_workspaces__workspace_id__profiles__name__put","parameters":["567aa53c-0d37-4910-b2cf-60ffad56bfd8","54d7802b-133f-4ae5-8dba-4b13861f143b"],"requestBody":"6b3a8391-592e-49ed-81ba-cdbf45ff8ef4","responses":{"200":"d7441b32-0cba-4701-968a-a3c038c961c7"},"description":"Create or replace a named permissions profile in the running workspace. Existing sessions keep their current permissions until explicitly updated. This does not change the saved workspace configuration.","tags":["Workspaces"],"x-hosts":["daemon"],"x-mint":{"content":"\u003cAccordion title=\"Errors\">\n\n| Status | Meaning |\n| --- | --- |\n| `401` | The token is missing or wrong |\n| `404` | The workspace, session, job or file does not exist |\n| `422` | Validation Error |\n| `429` | Past a rate limit, or a new session past max_sessions |\n\nSee [error examples and recovery steps](/api/errors). The [complete OpenAPI contract](https://github.com/strukto-ai/mirage/blob/main/docs/openapi.yaml) includes every response schema.\n\n\u003c/Accordion>"},"method":"put","type":"path","servers":["afafde3b-bc70-4615-873f-4ee992b62907"],"security":["09ecccca-9871-40a1-a73f-73d80f8c9acc"],"path":"/v1/workspaces/{workspace_id}/profiles/{name}","baseUrlOptions":["http://127.0.0.1:8765"],"title":"Set profile","codeSamples":[],"requestExampleLanguages":["bash","python","javascript"],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated","prefillPlaygroundWithExample":true,"prefillPlaygroundExamples":[{"body.cwd.oneOf.0":"/"}]},"dependencies":{"parameters":{"567aa53c-0d37-4910-b2cf-60ffad56bfd8":{"name":"workspace_id","in":"path","required":true,"description":"Workspace ID.","schema":{"type":"string","isRequired":true,"description":"Workspace ID.","uniqueKey":"","typeLabel":"string"},"example":"demo"},"54d7802b-133f-4ae5-8dba-4b13861f143b":{"name":"name","in":"path","required":true,"schema":{"type":"string","isRequired":true,"uniqueKey":"","typeLabel":"string"}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"cwd":{"oneOf":[{"type":"string","title":"Cwd","uniqueKey":"cwd.oneOf.0","typeLabel":"string"},{"type":"null","title":"Cwd","uniqueKey":"cwd.oneOf.1","typeLabel":"null"}],"uniqueKey":"cwd","typeLabel":"string | null"},"env":{"oneOf":[{"type":"object","title":"Env","additionalProperties":{"oneOf":[{"type":"string","uniqueKey":"env.oneOf.0.additionalProperties.oneOf.0","typeLabel":"string"},{"type":"object","title":"EnvVar","description":"An environment variable with a literal `value` or a secret source identified by `from`, never both. Use `ref` and `key` to select a secret. `readonly` prevents commands from changing the variable. Managed secrets are always exported; literal values use the `export` setting.","properties":{"value":{"oneOf":[{"type":"string","title":"Value","uniqueKey":"env.oneOf.0.additionalProperties.oneOf.1.value.oneOf.0","typeLabel":"string"},{"type":"null","title":"Value","uniqueKey":"env.oneOf.0.additionalProperties.oneOf.1.value.oneOf.1","typeLabel":"null"}],"uniqueKey":"env.oneOf.0.additionalProperties.oneOf.1.value","typeLabel":"string | null"},"readonly":{"type":"boolean","title":"Readonly","default":false,"uniqueKey":"env.oneOf.0.additionalProperties.oneOf.1.readonly","typeLabel":"boolean"},"export":{"type":"boolean","title":"Export","default":true,"uniqueKey":"env.oneOf.0.additionalProperties.oneOf.1.export","typeLabel":"boolean"},"from":{"oneOf":[{"type":"string","title":"From","uniqueKey":"env.oneOf.0.additionalProperties.oneOf.1.from.oneOf.0","typeLabel":"string"},{"type":"null","title":"From","uniqueKey":"env.oneOf.0.additionalProperties.oneOf.1.from.oneOf.1","typeLabel":"null"}],"uniqueKey":"env.oneOf.0.additionalProperties.oneOf.1.from","typeLabel":"string | null"},"ref":{"type":"string","title":"Ref","default":"","uniqueKey":"env.oneOf.0.additionalProperties.oneOf.1.ref","typeLabel":"string"},"key":{"oneOf":[{"type":"string","title":"Key","uniqueKey":"env.oneOf.0.additionalProperties.oneOf.1.key.oneOf.0","typeLabel":"string"},{"type":"null","title":"Key","uniqueKey":"env.oneOf.0.additionalProperties.oneOf.1.key.oneOf.1","typeLabel":"null"}],"uniqueKey":"env.oneOf.0.additionalProperties.oneOf.1.key","typeLabel":"string | null"},"fetch":{"type":"string","enum":["lazy","eager"],"title":"Fetch","default":"lazy","uniqueKey":"env.oneOf.0.additionalProperties.oneOf.1.fetch","typeLabel":"enum\u003cstring>"}},"additionalProperties":false,"uniqueKey":"env.oneOf.0.additionalProperties.oneOf.1","typeLabel":"EnvVar · object"}],"uniqueKey":"env.oneOf.0.additionalProperties","typeLabel":"string | EnvVar · object"},"uniqueKey":"env.oneOf.0","typeLabel":"Env · object"},{"type":"null","title":"Env","uniqueKey":"env.oneOf.1","typeLabel":"null"}],"uniqueKey":"env","typeLabel":"Env · object | null"},"mounts":{"oneOf":[{"type":"object","title":"Mounts","additionalProperties":{"properties":{"mode":{"oneOf":[{"type":"string","title":"MountMode","description":"Mount access level. `read` allows listing and reading. `write` also allows creating, modifying, and deleting files. `exec` additionally allows interpreter commands such as `python3` and `js`.\n\nInterpreter script files must be on an `exec` mount. Inline code and module execution require at least one `exec` mount; imports are not checked by path. Shell scripts follow the permissions of each command they run.","enum":["read","write","exec"],"uniqueKey":"mounts.oneOf.0.additionalProperties.mode.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","uniqueKey":"mounts.oneOf.0.additionalProperties.mode.oneOf.1","typeLabel":"null"}],"uniqueKey":"mounts.oneOf.0.additionalProperties.mode","typeLabel":"enum\u003cstring> | null"},"commands":{"oneOf":[{"type":"object","title":"MountCommandsBlock","description":"Approval and deny rules for commands working within this mount. Use session-level command rules for an allow list.","properties":{"ask":{"items":{"properties":{"reason":{"type":"string","title":"Reason","isRequired":true,"uniqueKey":"mounts.oneOf.0.additionalProperties.commands.oneOf.0.ask.items.[INDEX].reason","typeLabel":"string"},"commands":{"items":{"type":"string","uniqueKey":"mounts.oneOf.0.additionalProperties.commands.oneOf.0.ask.items.[INDEX].commands.items.[INDEX]","typeLabel":"string"},"type":"array","title":"Commands","default":[],"uniqueKey":"mounts.oneOf.0.additionalProperties.commands.oneOf.0.ask.items.[INDEX].commands","typeLabel":"string[]"},"paths":{"items":{"type":"string","uniqueKey":"mounts.oneOf.0.additionalProperties.commands.oneOf.0.ask.items.[INDEX].paths.items.[INDEX]","typeLabel":"string"},"type":"array","title":"Paths","default":[],"uniqueKey":"mounts.oneOf.0.additionalProperties.commands.oneOf.0.ask.items.[INDEX].paths","typeLabel":"string[]"},"mount":{"type":"string","title":"Mount","default":"","uniqueKey":"mounts.oneOf.0.additionalProperties.commands.oneOf.0.ask.items.[INDEX].mount","typeLabel":"string"}},"additionalProperties":false,"type":"object","required":["reason"],"title":"CommandRule","description":"Require approval or deny commands matching the specified patterns. A pattern such as `git push` matches that command and its arguments. Optional paths restrict the rule to matching files or directories. Rules under a mount apply only within that mount.","uniqueKey":"mounts.oneOf.0.additionalProperties.commands.oneOf.0.ask.items.[INDEX]","typeLabel":"CommandRule · object"},"type":"array","title":"Ask","default":[],"uniqueKey":"mounts.oneOf.0.additionalProperties.commands.oneOf.0.ask","typeLabel":"CommandRule · object[]"},"deny":{"items":{"properties":{"reason":{"type":"string","title":"Reason","isRequired":true,"uniqueKey":"mounts.oneOf.0.additionalProperties.commands.oneOf.0.deny.items.[INDEX].reason","typeLabel":"string"},"commands":{"items":{"type":"string","uniqueKey":"mounts.oneOf.0.additionalProperties.commands.oneOf.0.deny.items.[INDEX].commands.items.[INDEX]","typeLabel":"string"},"type":"array","title":"Commands","default":[],"uniqueKey":"mounts.oneOf.0.additionalProperties.commands.oneOf.0.deny.items.[INDEX].commands","typeLabel":"string[]"},"paths":{"items":{"type":"string","uniqueKey":"mounts.oneOf.0.additionalProperties.commands.oneOf.0.deny.items.[INDEX].paths.items.[INDEX]","typeLabel":"string"},"type":"array","title":"Paths","default":[],"uniqueKey":"mounts.oneOf.0.additionalProperties.commands.oneOf.0.deny.items.[INDEX].paths","typeLabel":"string[]"},"mount":{"type":"string","title":"Mount","default":"","uniqueKey":"mounts.oneOf.0.additionalProperties.commands.oneOf.0.deny.items.[INDEX].mount","typeLabel":"string"}},"additionalProperties":false,"type":"object","required":["reason"],"title":"CommandRule","description":"Require approval or deny commands matching the specified patterns. A pattern such as `git push` matches that command and its arguments. Optional paths restrict the rule to matching files or directories. Rules under a mount apply only within that mount.","uniqueKey":"mounts.oneOf.0.additionalProperties.commands.oneOf.0.deny.items.[INDEX]","typeLabel":"CommandRule · object"},"type":"array","title":"Deny","default":[],"uniqueKey":"mounts.oneOf.0.additionalProperties.commands.oneOf.0.deny","typeLabel":"CommandRule · object[]"}},"additionalProperties":false,"uniqueKey":"mounts.oneOf.0.additionalProperties.commands.oneOf.0","typeLabel":"MountCommandsBlock · object"},{"type":"null","uniqueKey":"mounts.oneOf.0.additionalProperties.commands.oneOf.1","typeLabel":"null"}],"uniqueKey":"mounts.oneOf.0.additionalProperties.commands","typeLabel":"MountCommandsBlock · object | null"},"paths":{"oneOf":[{"type":"object","title":"PathsBlock","description":"Control which paths a session can access. `hide` makes matching paths appear not to exist. `show` exposes more specific paths inside hidden regions, optionally with reduced permissions. Exact paths include their descendants; patterns support `*`, `?`, and character classes.","properties":{"hide":{"items":{"type":"string","uniqueKey":"mounts.oneOf.0.additionalProperties.paths.oneOf.0.hide.items.[INDEX]","typeLabel":"string"},"type":"array","title":"Hide","default":[],"uniqueKey":"mounts.oneOf.0.additionalProperties.paths.oneOf.0.hide","typeLabel":"string[]"},"show":{"items":{"properties":{"path":{"title":"Path","type":"string","isRequired":true,"uniqueKey":"mounts.oneOf.0.additionalProperties.paths.oneOf.0.show.items.[INDEX].path","typeLabel":"string"},"mode":{"oneOf":[{"type":"string","title":"MountMode","description":"Mount access level. `read` allows listing and reading. `write` also allows creating, modifying, and deleting files. `exec` additionally allows interpreter commands such as `python3` and `js`.\n\nInterpreter script files must be on an `exec` mount. Inline code and module execution require at least one `exec` mount; imports are not checked by path. Shell scripts follow the permissions of each command they run.","enum":["read","write","exec"],"uniqueKey":"mounts.oneOf.0.additionalProperties.paths.oneOf.0.show.items.[INDEX].mode.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","uniqueKey":"mounts.oneOf.0.additionalProperties.paths.oneOf.0.show.items.[INDEX].mode.oneOf.1","typeLabel":"null"}],"uniqueKey":"mounts.oneOf.0.additionalProperties.paths.oneOf.0.show.items.[INDEX].mode","typeLabel":"enum\u003cstring> | null"}},"additionalProperties":false,"type":"object","required":["path"],"title":"ShowEntry","description":"An absolute path or anchored path pattern to expose within a hidden region. Optional `mode` reduces permissions for that path. If omitted, mount permissions apply.","uniqueKey":"mounts.oneOf.0.additionalProperties.paths.oneOf.0.show.items.[INDEX]","typeLabel":"ShowEntry · object"},"type":"array","title":"Show","default":[],"uniqueKey":"mounts.oneOf.0.additionalProperties.paths.oneOf.0.show","typeLabel":"ShowEntry · object[]"},"reasons":{"items":{"properties":{"patterns":{"items":{"type":"string","uniqueKey":"mounts.oneOf.0.additionalProperties.paths.oneOf.0.reasons.items.[INDEX].patterns.items.[INDEX]","typeLabel":"string"},"type":"array","title":"Patterns","isRequired":true,"uniqueKey":"mounts.oneOf.0.additionalProperties.paths.oneOf.0.reasons.items.[INDEX].patterns","typeLabel":"string[]"},"reason":{"type":"string","title":"Reason","isRequired":true,"uniqueKey":"mounts.oneOf.0.additionalProperties.paths.oneOf.0.reasons.items.[INDEX].reason","typeLabel":"string"}},"additionalProperties":false,"type":"object","required":["patterns","reason"],"title":"HideReason","description":"An optional explanation for hidden paths. The explanation is available to operators, not to agents accessing the workspace. Hidden paths appear not to exist.","uniqueKey":"mounts.oneOf.0.additionalProperties.paths.oneOf.0.reasons.items.[INDEX]","typeLabel":"HideReason · object"},"type":"array","title":"Reasons","default":[],"uniqueKey":"mounts.oneOf.0.additionalProperties.paths.oneOf.0.reasons","typeLabel":"HideReason · object[]"}},"additionalProperties":false,"uniqueKey":"mounts.oneOf.0.additionalProperties.paths.oneOf.0","typeLabel":"PathsBlock · object"},{"type":"null","uniqueKey":"mounts.oneOf.0.additionalProperties.paths.oneOf.1","typeLabel":"null"}],"uniqueKey":"mounts.oneOf.0.additionalProperties.paths","typeLabel":"PathsBlock · object | null"}},"additionalProperties":false,"type":"object","title":"ProfileMount","description":"Optional permissions for a specific mount. A profile can reduce mount permissions but cannot increase them. Omitted mounts retain their configured permissions. Use path hiding to prevent access to a mount.","uniqueKey":"mounts.oneOf.0.additionalProperties","typeLabel":"ProfileMount · object"},"uniqueKey":"mounts.oneOf.0","typeLabel":"Mounts · object"},{"type":"null","title":"Mounts","uniqueKey":"mounts.oneOf.1","typeLabel":"null"}],"uniqueKey":"mounts","typeLabel":"Mounts · object | null"},"paths":{"oneOf":[{"type":"object","title":"PathsBlock","description":"Control which paths a session can access. `hide` makes matching paths appear not to exist. `show` exposes more specific paths inside hidden regions, optionally with reduced permissions. Exact paths include their descendants; patterns support `*`, `?`, and character classes.","properties":{"hide":{"items":{"type":"string","uniqueKey":"paths.oneOf.0.hide.items.[INDEX]","typeLabel":"string"},"type":"array","title":"Hide","default":[],"uniqueKey":"paths.oneOf.0.hide","typeLabel":"string[]"},"show":{"items":{"properties":{"path":{"title":"Path","type":"string","isRequired":true,"uniqueKey":"paths.oneOf.0.show.items.[INDEX].path","typeLabel":"string"},"mode":{"oneOf":[{"type":"string","title":"MountMode","description":"Mount access level. `read` allows listing and reading. `write` also allows creating, modifying, and deleting files. `exec` additionally allows interpreter commands such as `python3` and `js`.\n\nInterpreter script files must be on an `exec` mount. Inline code and module execution require at least one `exec` mount; imports are not checked by path. Shell scripts follow the permissions of each command they run.","enum":["read","write","exec"],"uniqueKey":"paths.oneOf.0.show.items.[INDEX].mode.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","uniqueKey":"paths.oneOf.0.show.items.[INDEX].mode.oneOf.1","typeLabel":"null"}],"uniqueKey":"paths.oneOf.0.show.items.[INDEX].mode","typeLabel":"enum\u003cstring> | null"}},"additionalProperties":false,"type":"object","required":["path"],"title":"ShowEntry","description":"An absolute path or anchored path pattern to expose within a hidden region. Optional `mode` reduces permissions for that path. If omitted, mount permissions apply.","uniqueKey":"paths.oneOf.0.show.items.[INDEX]","typeLabel":"ShowEntry · object"},"type":"array","title":"Show","default":[],"uniqueKey":"paths.oneOf.0.show","typeLabel":"ShowEntry · object[]"},"reasons":{"items":{"properties":{"patterns":{"items":{"type":"string","uniqueKey":"paths.oneOf.0.reasons.items.[INDEX].patterns.items.[INDEX]","typeLabel":"string"},"type":"array","title":"Patterns","isRequired":true,"uniqueKey":"paths.oneOf.0.reasons.items.[INDEX].patterns","typeLabel":"string[]"},"reason":{"type":"string","title":"Reason","isRequired":true,"uniqueKey":"paths.oneOf.0.reasons.items.[INDEX].reason","typeLabel":"string"}},"additionalProperties":false,"type":"object","required":["patterns","reason"],"title":"HideReason","description":"An optional explanation for hidden paths. The explanation is available to operators, not to agents accessing the workspace. Hidden paths appear not to exist.","uniqueKey":"paths.oneOf.0.reasons.items.[INDEX]","typeLabel":"HideReason · object"},"type":"array","title":"Reasons","default":[],"uniqueKey":"paths.oneOf.0.reasons","typeLabel":"HideReason · object[]"}},"additionalProperties":false,"uniqueKey":"paths.oneOf.0","typeLabel":"PathsBlock · object"},{"type":"null","uniqueKey":"paths.oneOf.1","typeLabel":"null"}],"uniqueKey":"paths","typeLabel":"PathsBlock · object | null"},"vars":{"oneOf":[{"type":"object","title":"VarsBlock","description":"Environment variable names or glob patterns to hide from the session. Hidden variables appear unset.","properties":{"hide":{"items":{"type":"string","uniqueKey":"vars.oneOf.0.hide.items.[INDEX]","typeLabel":"string"},"type":"array","title":"Hide","default":[],"uniqueKey":"vars.oneOf.0.hide","typeLabel":"string[]"}},"additionalProperties":false,"uniqueKey":"vars.oneOf.0","typeLabel":"VarsBlock · object"},{"type":"null","uniqueKey":"vars.oneOf.1","typeLabel":"null"}],"uniqueKey":"vars","typeLabel":"VarsBlock · object | null"},"commands":{"oneOf":[{"type":"object","title":"CommandsBlock","description":"Command access rules. `allow` restricts available commands to matching patterns. `ask` requires approval, and `deny` blocks matching commands with a reason. If `allow` is omitted, it adds no restriction.","properties":{"allow":{"oneOf":[{"type":"array","items":{"type":"string","uniqueKey":"commands.oneOf.0.allow.oneOf.0.items.[INDEX]","typeLabel":"string"},"title":"Allow","uniqueKey":"commands.oneOf.0.allow.oneOf.0","typeLabel":"string[]"},{"type":"null","title":"Allow","uniqueKey":"commands.oneOf.0.allow.oneOf.1","typeLabel":"null"}],"uniqueKey":"commands.oneOf.0.allow","typeLabel":"string[] | null"},"ask":{"items":{"properties":{"reason":{"type":"string","title":"Reason","isRequired":true,"uniqueKey":"commands.oneOf.0.ask.items.[INDEX].reason","typeLabel":"string"},"commands":{"items":{"type":"string","uniqueKey":"commands.oneOf.0.ask.items.[INDEX].commands.items.[INDEX]","typeLabel":"string"},"type":"array","title":"Commands","default":[],"uniqueKey":"commands.oneOf.0.ask.items.[INDEX].commands","typeLabel":"string[]"},"paths":{"items":{"type":"string","uniqueKey":"commands.oneOf.0.ask.items.[INDEX].paths.items.[INDEX]","typeLabel":"string"},"type":"array","title":"Paths","default":[],"uniqueKey":"commands.oneOf.0.ask.items.[INDEX].paths","typeLabel":"string[]"},"mount":{"type":"string","title":"Mount","default":"","uniqueKey":"commands.oneOf.0.ask.items.[INDEX].mount","typeLabel":"string"}},"additionalProperties":false,"type":"object","required":["reason"],"title":"CommandRule","description":"Require approval or deny commands matching the specified patterns. A pattern such as `git push` matches that command and its arguments. Optional paths restrict the rule to matching files or directories. Rules under a mount apply only within that mount.","uniqueKey":"commands.oneOf.0.ask.items.[INDEX]","typeLabel":"CommandRule · object"},"type":"array","title":"Ask","default":[],"uniqueKey":"commands.oneOf.0.ask","typeLabel":"CommandRule · object[]"},"deny":{"items":{"properties":{"reason":{"type":"string","title":"Reason","isRequired":true,"uniqueKey":"commands.oneOf.0.deny.items.[INDEX].reason","typeLabel":"string"},"commands":{"items":{"type":"string","uniqueKey":"commands.oneOf.0.deny.items.[INDEX].commands.items.[INDEX]","typeLabel":"string"},"type":"array","title":"Commands","default":[],"uniqueKey":"commands.oneOf.0.deny.items.[INDEX].commands","typeLabel":"string[]"},"paths":{"items":{"type":"string","uniqueKey":"commands.oneOf.0.deny.items.[INDEX].paths.items.[INDEX]","typeLabel":"string"},"type":"array","title":"Paths","default":[],"uniqueKey":"commands.oneOf.0.deny.items.[INDEX].paths","typeLabel":"string[]"},"mount":{"type":"string","title":"Mount","default":"","uniqueKey":"commands.oneOf.0.deny.items.[INDEX].mount","typeLabel":"string"}},"additionalProperties":false,"type":"object","required":["reason"],"title":"CommandRule","description":"Require approval or deny commands matching the specified patterns. A pattern such as `git push` matches that command and its arguments. Optional paths restrict the rule to matching files or directories. Rules under a mount apply only within that mount.","uniqueKey":"commands.oneOf.0.deny.items.[INDEX]","typeLabel":"CommandRule · object"},"type":"array","title":"Deny","default":[],"uniqueKey":"commands.oneOf.0.deny","typeLabel":"CommandRule · object[]"}},"additionalProperties":false,"uniqueKey":"commands.oneOf.0","typeLabel":"CommandsBlock · object"},{"type":"null","uniqueKey":"commands.oneOf.1","typeLabel":"null"}],"uniqueKey":"commands","typeLabel":"CommandsBlock · object | null"},"policy":{"oneOf":[{"type":"object","title":"Policy","additionalProperties":{"items":{"properties":{"script":{"oneOf":[{"type":"object","title":"ScriptSource","description":"Embedded program source with a language and optional JavaScript module mode. Configuration files can reference `.py`, `.js`, or `.mjs` files; the loader embeds their contents. `.mjs` files use module mode for imports and top-level `await`.","required":["source"],"properties":{"source":{"title":"Source","type":"string","isRequired":true,"uniqueKey":"policy.oneOf.0.additionalProperties.items.[INDEX].script.oneOf.0.source","typeLabel":"string"},"language":{"type":"string","enum":["python","js"],"title":"Language","default":"python","uniqueKey":"policy.oneOf.0.additionalProperties.items.[INDEX].script.oneOf.0.language","typeLabel":"enum\u003cstring>"},"module":{"type":"boolean","title":"Module","default":false,"uniqueKey":"policy.oneOf.0.additionalProperties.items.[INDEX].script.oneOf.0.module","typeLabel":"boolean"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"policy.oneOf.0.additionalProperties.items.[INDEX].script.oneOf.0","typeLabel":"ScriptSource · object"},{"type":"string","title":"Script","isRequired":true,"uniqueKey":"policy.oneOf.0.additionalProperties.items.[INDEX].script.oneOf.1","typeLabel":"string"}],"isRequired":true,"uniqueKey":"policy.oneOf.0.additionalProperties.items.[INDEX].script","typeLabel":"ScriptSource · object | string"},"runtime":{"oneOf":[{"type":"string","title":"Runtime","default":"monty","uniqueKey":"policy.oneOf.0.additionalProperties.items.[INDEX].runtime.oneOf.0","typeLabel":"string"},{"type":"object","title":"Runtime","default":"monty","additionalProperties":true,"uniqueKey":"policy.oneOf.0.additionalProperties.items.[INDEX].runtime.oneOf.1","typeLabel":"Runtime · object"}],"uniqueKey":"policy.oneOf.0.additionalProperties.items.[INDEX].runtime","typeLabel":"string | Runtime · object"},"env":{"additionalProperties":{"oneOf":[{"type":"string","uniqueKey":"policy.oneOf.0.additionalProperties.items.[INDEX].env.additionalProperties.oneOf.0","typeLabel":"string"},{"type":"object","title":"SecretRef","description":"Read a configuration value from a secret source using `from`, `ref`, and `key`. The available sources depend on where this reference is used. Secret-source configuration allows only bootstrap sources such as environment variables or dotenv files.","required":["from","key"],"properties":{"from":{"type":"string","title":"From","isRequired":true,"uniqueKey":"policy.oneOf.0.additionalProperties.items.[INDEX].env.additionalProperties.oneOf.1.from","typeLabel":"string"},"key":{"type":"string","title":"Key","isRequired":true,"uniqueKey":"policy.oneOf.0.additionalProperties.items.[INDEX].env.additionalProperties.oneOf.1.key","typeLabel":"string"},"ref":{"type":"string","title":"Ref","default":"","uniqueKey":"policy.oneOf.0.additionalProperties.items.[INDEX].env.additionalProperties.oneOf.1.ref","typeLabel":"string"}},"additionalProperties":false,"uniqueKey":"policy.oneOf.0.additionalProperties.items.[INDEX].env.additionalProperties.oneOf.1","typeLabel":"SecretRef · object"}],"uniqueKey":"policy.oneOf.0.additionalProperties.items.[INDEX].env.additionalProperties","typeLabel":"string | SecretRef · object"},"type":"object","title":"Env","default":{},"uniqueKey":"policy.oneOf.0.additionalProperties.items.[INDEX].env","typeLabel":"Env · object"}},"additionalProperties":false,"type":"object","required":["script"],"title":"ProfilePolicy","description":"Custom policy programs, grouped by the method they handle. Provide a script, its runtime, and optional environment variables. If no runtime is specified, Monty is used and must be installed. Policy programs use their configured environment and can read session variables through `ctx[\"env\"]`.","uniqueKey":"policy.oneOf.0.additionalProperties.items.[INDEX]","typeLabel":"ProfilePolicy · object"},"type":"array","uniqueKey":"policy.oneOf.0.additionalProperties","typeLabel":"ProfilePolicy · object[]"},"uniqueKey":"policy.oneOf.0","typeLabel":"Policy · object"},{"type":"null","title":"Policy","uniqueKey":"policy.oneOf.1","typeLabel":"null"}],"uniqueKey":"policy","typeLabel":"Policy · object | null"},"command_limits":{"oneOf":[{"type":"object","title":"Command Limits","additionalProperties":{"properties":{"max_bytes":{"oneOf":[{"type":"integer","title":"Max Bytes","minimum":0,"uniqueKey":"command_limits.oneOf.0.additionalProperties.max_bytes.oneOf.0","typeLabel":"integer"},{"type":"null","title":"Max Bytes","uniqueKey":"command_limits.oneOf.0.additionalProperties.max_bytes.oneOf.1","typeLabel":"null"}],"uniqueKey":"command_limits.oneOf.0.additionalProperties.max_bytes","typeLabel":"integer | null"},"max_lines":{"oneOf":[{"type":"integer","title":"Max Lines","minimum":0,"uniqueKey":"command_limits.oneOf.0.additionalProperties.max_lines.oneOf.0","typeLabel":"integer"},{"type":"null","title":"Max Lines","uniqueKey":"command_limits.oneOf.0.additionalProperties.max_lines.oneOf.1","typeLabel":"null"}],"uniqueKey":"command_limits.oneOf.0.additionalProperties.max_lines","typeLabel":"integer | null"},"timeout_seconds":{"oneOf":[{"type":"number","title":"Timeout Seconds","minimum":0,"uniqueKey":"command_limits.oneOf.0.additionalProperties.timeout_seconds.oneOf.0","typeLabel":"number"},{"type":"null","title":"Timeout Seconds","uniqueKey":"command_limits.oneOf.0.additionalProperties.timeout_seconds.oneOf.1","typeLabel":"null"}],"uniqueKey":"command_limits.oneOf.0.additionalProperties.timeout_seconds","typeLabel":"number | null"},"walk_limit":{"oneOf":[{"type":"integer","title":"Walk Limit","minimum":-1,"uniqueKey":"command_limits.oneOf.0.additionalProperties.walk_limit.oneOf.0","typeLabel":"integer"},{"type":"null","title":"Walk Limit","uniqueKey":"command_limits.oneOf.0.additionalProperties.walk_limit.oneOf.1","typeLabel":"null"}],"uniqueKey":"command_limits.oneOf.0.additionalProperties.walk_limit","typeLabel":"integer | null"},"on_exceed":{"type":"string","enum":["error","truncate"],"title":"OnExceed","default":"truncate","uniqueKey":"command_limits.oneOf.0.additionalProperties.on_exceed","typeLabel":"enum\u003cstring>"}},"additionalProperties":false,"type":"object","title":"Limit","description":"Limits for command output, execution time, and directory traversal. Use `on_exceed` to truncate results or return an error. A `walk_limit` of `-1` allows unlimited entries.","uniqueKey":"command_limits.oneOf.0.additionalProperties","typeLabel":"Limit · object"},"uniqueKey":"command_limits.oneOf.0","typeLabel":"Command Limits · object"},{"type":"null","title":"Command Limits","uniqueKey":"command_limits.oneOf.1","typeLabel":"null"}],"uniqueKey":"command_limits","typeLabel":"Command Limits · object | null"},"processes":{"oneOf":[{"type":"object","title":"ProcessPermissions","description":"Control which processes a session can list or stop, and the maximum number it can run. Sessions always have access to their own processes. The stop scope cannot exceed the list scope. Profile settings override workspace defaults.","properties":{"list":{"type":"string","enum":["session","workspace"],"title":"List","default":"session","uniqueKey":"processes.oneOf.0.list","typeLabel":"enum\u003cstring>"},"kill":{"type":"string","enum":["session","workspace"],"title":"Kill","default":"session","uniqueKey":"processes.oneOf.0.kill","typeLabel":"enum\u003cstring>"},"max":{"oneOf":[{"type":"integer","title":"Max","default":128,"minimum":1,"uniqueKey":"processes.oneOf.0.max.oneOf.0","typeLabel":"integer"},{"type":"null","title":"Max","default":128,"uniqueKey":"processes.oneOf.0.max.oneOf.1","typeLabel":"null"}],"uniqueKey":"processes.oneOf.0.max","typeLabel":"integer | null"}},"additionalProperties":false,"uniqueKey":"processes.oneOf.0","typeLabel":"ProcessPermissions · object"},{"type":"null","uniqueKey":"processes.oneOf.1","typeLabel":"null"}],"uniqueKey":"processes","typeLabel":"ProcessPermissions · object | null"},"network":{"oneOf":[{"type":"boolean","title":"Network","uniqueKey":"network.oneOf.0","typeLabel":"boolean"},{"type":"object","title":"Network","additionalProperties":{"oneOf":[{"type":"array","items":{"type":"string","uniqueKey":"network.oneOf.1.additionalProperties.oneOf.0.items.[INDEX]","typeLabel":"string"},"uniqueKey":"network.oneOf.1.additionalProperties.oneOf.0","typeLabel":"string[]"},{"type":"object","additionalProperties":{"type":"string","uniqueKey":"network.oneOf.1.additionalProperties.oneOf.1.additionalProperties","typeLabel":"string"},"uniqueKey":"network.oneOf.1.additionalProperties.oneOf.1","typeLabel":"object"}],"uniqueKey":"network.oneOf.1.additionalProperties","typeLabel":"string[] | object"},"uniqueKey":"network.oneOf.1","typeLabel":"Network · object"},{"type":"null","title":"Network","uniqueKey":"network.oneOf.2","typeLabel":"null"}],"uniqueKey":"network","typeLabel":"boolean | Network · object | null"}},"additionalProperties":false,"type":"object","title":"SessionProfile","description":"Permissions and initial settings for a session. Unspecified settings add no restrictions beyond the workspace configuration.\n\nUse `commands`, `paths`, and `mounts` to control access, and `policy` for custom rules. For command rules without paths, deny takes precedence over approval requests and allow rules. More specific path rules take precedence over broader rules. See [permissions profiles](/home/policy/overview) for rule examples.","uniqueKey":"","typeLabel":"SessionProfile · object"},"example":{"cwd":"/"},"examples":{"Example":{"title":"Example","value":{"cwd":"/"}}},"exampleType":"examples"}},"exampleType":"examples"},"responses":{"d7441b32-0cba-4701-968a-a3c038c961c7":{"description":"OK","content":{"application/json":{"example":{"name":"analyst"},"schema":{"type":"object","additionalProperties":{"type":"string","uniqueKey":"additionalProperties","typeLabel":"string"},"title":"Response Set Profile V1 Workspaces Workspace Id Profiles Name Put","uniqueKey":"","typeLabel":"Response Set Profile V1 Workspaces Workspace Id Profiles Name Put · object"},"examples":{"Example":{"title":"Example","value":{"name":"analyst"}}},"exampleType":"examples"}},"exampleType":"examples"}},"security":{"09ecccca-9871-40a1-a73f-73d80f8c9acc":{"bearerAuth":{"type":"http","scheme":"bearer","description":"The server's token (MIRAGE_AUTH_TOKEN) or a JWT. A daemon in the default local mode with no token accepts requests without one.","scopes":[],"schemeName":"bearerAuth"}}},"servers":{"afafde3b-bc70-4615-873f-4ee992b62907":{"url":"http://127.0.0.1:8765","description":"A local server on its default port"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"http","scheme":"bearer","description":"The server's token (MIRAGE_AUTH_TOKEN) or a JWT. A daemon in the default local mode with no token accepts requests without one.","scopes":[],"schemeName":"bearerAuth"},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"The server's token (MIRAGE_AUTH_TOKEN) or a JWT. A daemon in the default local mode with no token accepts requests without one.","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"bearerAuth","name":"Authorization"}],"title":"bearerAuth"}]},"originalFileLocation":"openapi.yaml"},"subdomain":"struktoai","siteName":"Mirage","title":"Set profile - Mirage","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-11-09T11:37:56.513Z","originalFileLocation":"api/operations/workspaces/set-profile.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=\"Create or replace a named permissions profile in the running workspace. Existing sessions keep their current permissions until explicitly updated. This does not change the saved workspace configuration.\">\u003cmeta data-mint-head name=\"keywords\" content=\"Mirage, filesystem for AI agents, virtual filesystem, AI agent tools, agent infrastructure, MCP alternative, bash for agents, S3 filesystem, Google Drive filesystem, Slack filesystem, GitHub filesystem, agent sandbox, Strukto\">\u003cmeta data-mint-head name=\"application-name\" content=\"Mirage\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003cmeta data-mint-head name=\"robots\" content=\"index, follow\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/struktoai/3lv99snhL-Tr_A0L/_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/struktoai/3lv99snhL-Tr_A0L/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/struktoai/3lv99snhL-Tr_A0L/_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/struktoai/3lv99snhL-Tr_A0L/_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/struktoai/3lv99snhL-Tr_A0L/_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/struktoai/3lv99snhL-Tr_A0L/_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/struktoai/3lv99snhL-Tr_A0L/_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/struktoai/3lv99snhL-Tr_A0L/_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/struktoai/3lv99snhL-Tr_A0L/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Set profile - Mirage\">\u003cmeta data-mint-head property=\"og:description\" content=\"Create or replace a named permissions profile in the running workspace. Existing sessions keep their current permissions until explicitly updated. This does not change the saved workspace configuration.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Mirage\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.mirage.strukto.ai/api/operations/workspaces/set-profile\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://raw.githubusercontent.com/strukto-ai/mirage/main/assets/mirage-og-light@2x.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=\"Set profile - Mirage\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Create or replace a named permissions profile in the running workspace. Existing sessions keep their current permissions until explicitly updated. This does not change the saved workspace configuration.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://raw.githubusercontent.com/strukto-ai/mirage/main/assets/mirage-og-light@2x.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/struktoai/3lv99snhL-Tr_A0L/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Mirage\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#0C0C0C\">\u003cmeta data-mint-head name=\"og:locale\" content=\"en_US\">\u003cmeta data-mint-head name=\"author\" content=\"Strukto\">\u003cmeta data-mint-head name=\"googlebot\" content=\"index, follow\">\u003cmeta data-mint-head name=\"theme-color\" content=\"#0C0C0C\">\u003cmeta data-mint-head name=\"color-scheme\" content=\"light dark\">\u003cmeta data-mint-head name=\"language\" content=\"en\">\u003cmeta data-mint-head name=\"category\" content=\"Technology\">\u003cmeta data-mint-head name=\"target\" content=\"developers\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-capable\" content=\"yes\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-status-bar-style\" content=\"black-translucent\">\u003cmeta data-mint-head name=\"og:image:alt\" content=\"Mirage: a virtual terminal for AI agents\">\u003cmeta data-mint-head name=\"twitter:creator\" content=\"@struktoai\">\u003cmeta data-mint-head name=\"twitter:image:alt\" content=\"Mirage · A Virtual Terminal for AI Agents | Strukto\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.mirage.strukto.ai/api/operations/workspaces/set-profile\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api/operations/workspaces/set-profile.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.mirage.strukto.ai/#organization\",\"name\":\"Mirage\",\"url\":\"https://docs.mirage.strukto.ai\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/struktoai/7G-pGKhPIqaKqOXr/logo/light.svg?fit=max\u0026auto=format\u0026n=7G-pGKhPIqaKqOXr\u0026q=85\u0026s=d7007be7b5588a72b2072d2c33791785\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.mirage.strukto.ai#website\",\"name\":\"Mirage\",\"url\":\"https://docs.mirage.strukto.ai\",\"publisher\":{\"@id\":\"https://docs.mirage.strukto.ai/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.mirage.strukto.ai/api/operations/workspaces/set-profile#webpage\",\"url\":\"https://docs.mirage.strukto.ai/api/operations/workspaces/set-profile\",\"name\":\"Set profile\",\"description\":\"Create or replace a named permissions profile in the running workspace. Existing sessions keep their current permissions until explicitly updated. This does not change the saved workspace configuration.\",\"dateModified\":\"2026-11-09T11:37:56.513Z\",\"isPartOf\":{\"@id\":\"https://docs.mirage.strukto.ai#website\"},\"breadcrumb\":{\"@id\":\"https://docs.mirage.strukto.ai/api/operations/workspaces/set-profile#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.mirage.strukto.ai/api/operations/workspaces/set-profile#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Workspaces\",\"item\":\"https://docs.mirage.strukto.ai/api/operations/workspaces/create-workspace\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Lifecycle\",\"item\":\"https://docs.mirage.strukto.ai/api/operations/workspaces/create-workspace\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Set profile\",\"item\":\"https://docs.mirage.strukto.ai/api/operations/workspaces/set-profile\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.mirage.strukto.ai/api/operations/workspaces/set-profile#apireference\",\"headline\":\"Set profile\",\"name\":\"Set profile\",\"description\":\"Create or replace a named permissions profile in the running workspace. Existing sessions keep their current permissions until explicitly updated. This does not change the saved workspace configuration.\",\"url\":\"https://docs.mirage.strukto.ai/api/operations/workspaces/set-profile\",\"mainEntityOfPage\":{\"@id\":\"https://docs.mirage.strukto.ai/api/operations/workspaces/set-profile#webpage\"},\"image\":\"https://raw.githubusercontent.com/strukto-ai/mirage/main/assets/mirage-og-light@2x.png\",\"dateModified\":\"2026-11-09T11:37:56.513Z\",\"publisher\":{\"@id\":\"https://docs.mirage.strukto.ai/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.mirage.strukto.ai#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Mirage\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Mirage","nav":{"global":null,"tabs":[{"tab":"Home","icon":"https://mintlify.s3.us-west-1.amazonaws.com/struktoai/images/mirage-icon-light.svg","pages":[{"title":"Home","href":"/home/introduction"}]},{"tab":"Python","icon":"https://mintlify.s3.us-west-1.amazonaws.com/struktoai/images/python-logo.svg","pages":[{"title":"Python","href":"/python/install"}]},{"tab":"TS","icon":"https://mintlify.s3.us-west-1.amazonaws.com/struktoai/images/typescript-logo.svg","pages":[{"title":"TS","href":"/typescript/install"}]},{"tab":"API reference","icon":"code","groups":[{"group":"HTTP API","pages":[{"title":"Overview","icon":"book-open","href":"/api/overview"},{"title":"Quickstart","icon":"bolt","href":"/api/quickstart"},{"title":"Authentication","icon":"key","href":"/api/authentication"},{"title":"Streaming and stdin","icon":"arrows-left-right","href":"/api/streaming"},{"title":"Errors","icon":"triangle-exclamation","href":"/api/errors"},{"title":"API reference","icon":"list","href":"/api/reference"}]},{"group":"Workspaces","pages":[{"group":"Lifecycle","pages":[{"title":"Create workspace","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/workspaces","href":"/api/operations/workspaces/create-workspace"},{"title":"List workspaces","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/workspaces","href":"/api/operations/workspaces/list-workspaces"},{"title":"Get workspace","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/workspaces/{workspace_id}","href":"/api/operations/workspaces/get-workspace"},{"title":"Delete workspace","deprecated":null,"version":null,"openapi":"/openapi.yaml delete /v1/workspaces/{workspace_id}","href":"/api/operations/workspaces/delete-workspace"},{"title":"List workspace logs","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/workspaces/{workspace_id}/logs","href":"/api/operations/workspaces/list-workspace-logs"},{"title":"Stop workspace","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/workspaces/{workspace_id}/stop","href":"/api/operations/workspaces/stop-workspace"},{"title":"Start workspace","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/workspaces/{workspace_id}/start","href":"/api/operations/workspaces/start-workspace"},{"title":"Cancel all commands","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/workspaces/{workspace_id}/cancel","href":"/api/operations/workspaces/cancel-all-commands"},{"title":"Stop all background jobs","description":"Stop background jobs and runtime processes across every session. The workspace and sessions remain open.","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/workspaces/{workspace_id}/kill","href":"/api/operations/workspaces/stop-all-background-jobs"},{"title":"Set profile","deprecated":null,"version":null,"openapi":"/openapi.yaml put /v1/workspaces/{workspace_id}/profiles/{name}","href":"/api/operations/workspaces/set-profile"}]},{"group":"Shell","pages":[{"title":"Run shell command","description":"Run a shell command or script in the workspace. Check `exit_code` to determine whether it succeeded.\n\nSet `stream=true` for live output. Add `open_stdin=true` to send more input while the command runs. See [Streaming and stdin](/api/streaming) for output formats and input examples.","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/workspaces/{workspace_id}/shell","href":"/api/operations/shell/run-shell-command"}]},{"group":"VFS","pages":[{"title":"Read file","deprecated":null,"version":null,"sidebarTitle":"read","openapi":"/openapi.yaml post /v1/workspaces/{workspace_id}/vfs/read","href":"/api/operations/vfs/read-file"},{"title":"Write file","deprecated":null,"version":null,"sidebarTitle":"write","openapi":"/openapi.yaml post /v1/workspaces/{workspace_id}/vfs/write","href":"/api/operations/vfs/write-file"},{"title":"Append to file","deprecated":null,"version":null,"sidebarTitle":"append","openapi":"/openapi.yaml post /v1/workspaces/{workspace_id}/vfs/append","href":"/api/operations/vfs/append-to-file"},{"title":"Write at file offset","deprecated":null,"version":null,"sidebarTitle":"pwrite","openapi":"/openapi.yaml post /v1/workspaces/{workspace_id}/vfs/pwrite","href":"/api/operations/vfs/write-at-file-offset"},{"title":"Get path metadata","deprecated":null,"version":null,"sidebarTitle":"stat","openapi":"/openapi.yaml post /v1/workspaces/{workspace_id}/vfs/stat","href":"/api/operations/vfs/get-path-metadata"},{"title":"List directory entries","deprecated":null,"version":null,"sidebarTitle":"readdir","openapi":"/openapi.yaml post /v1/workspaces/{workspace_id}/vfs/readdir","href":"/api/operations/vfs/list-directory-entries"},{"title":"Check path exists","deprecated":null,"version":null,"sidebarTitle":"exists","openapi":"/openapi.yaml post /v1/workspaces/{workspace_id}/vfs/exists","href":"/api/operations/vfs/check-path-exists"},{"title":"Check path is directory","deprecated":null,"version":null,"sidebarTitle":"is_dir","openapi":"/openapi.yaml post /v1/workspaces/{workspace_id}/vfs/is_dir","href":"/api/operations/vfs/check-path-is-directory"},{"title":"Check path is file","deprecated":null,"version":null,"sidebarTitle":"is_file","openapi":"/openapi.yaml post /v1/workspaces/{workspace_id}/vfs/is_file","href":"/api/operations/vfs/check-path-is-file"},{"title":"List file names","deprecated":null,"version":null,"sidebarTitle":"list_files","openapi":"/openapi.yaml post /v1/workspaces/{workspace_id}/vfs/list_files","href":"/api/operations/vfs/list-file-names"},{"title":"Create directory","deprecated":null,"version":null,"sidebarTitle":"mkdir","openapi":"/openapi.yaml post /v1/workspaces/{workspace_id}/vfs/mkdir","href":"/api/operations/vfs/create-directory"},{"title":"Delete empty directory","deprecated":null,"version":null,"sidebarTitle":"rmdir","openapi":"/openapi.yaml post /v1/workspaces/{workspace_id}/vfs/rmdir","href":"/api/operations/vfs/delete-empty-directory"},{"title":"Delete file","deprecated":null,"version":null,"sidebarTitle":"unlink","openapi":"/openapi.yaml post /v1/workspaces/{workspace_id}/vfs/unlink","href":"/api/operations/vfs/delete-file"},{"title":"Create empty file","deprecated":null,"version":null,"sidebarTitle":"create","openapi":"/openapi.yaml post /v1/workspaces/{workspace_id}/vfs/create","href":"/api/operations/vfs/create-empty-file"},{"title":"Rename path","deprecated":null,"version":null,"sidebarTitle":"rename","openapi":"/openapi.yaml post /v1/workspaces/{workspace_id}/vfs/rename","href":"/api/operations/vfs/rename-path"},{"title":"Create symbolic link","deprecated":null,"version":null,"sidebarTitle":"symlink","openapi":"/openapi.yaml post /v1/workspaces/{workspace_id}/vfs/symlink","href":"/api/operations/vfs/create-symbolic-link"},{"title":"Read symbolic link","deprecated":null,"version":null,"sidebarTitle":"readlink","openapi":"/openapi.yaml post /v1/workspaces/{workspace_id}/vfs/readlink","href":"/api/operations/vfs/read-symbolic-link"},{"title":"Update path attributes","deprecated":null,"version":null,"sidebarTitle":"setattr","openapi":"/openapi.yaml post /v1/workspaces/{workspace_id}/vfs/setattr","href":"/api/operations/vfs/update-path-attributes"},{"title":"Get extended attribute","deprecated":null,"version":null,"sidebarTitle":"getxattr","openapi":"/openapi.yaml post /v1/workspaces/{workspace_id}/vfs/getxattr","href":"/api/operations/vfs/get-extended-attribute"},{"title":"List extended attributes","deprecated":null,"version":null,"sidebarTitle":"listxattr","openapi":"/openapi.yaml post /v1/workspaces/{workspace_id}/vfs/listxattr","href":"/api/operations/vfs/list-extended-attributes"},{"title":"Set extended attribute","deprecated":null,"version":null,"sidebarTitle":"setxattr","openapi":"/openapi.yaml post /v1/workspaces/{workspace_id}/vfs/setxattr","href":"/api/operations/vfs/set-extended-attribute"},{"title":"Remove extended attribute","deprecated":null,"version":null,"sidebarTitle":"removexattr","openapi":"/openapi.yaml post /v1/workspaces/{workspace_id}/vfs/removexattr","href":"/api/operations/vfs/remove-extended-attribute"},{"title":"Resize file","deprecated":null,"version":null,"sidebarTitle":"truncate","openapi":"/openapi.yaml post /v1/workspaces/{workspace_id}/vfs/truncate","href":"/api/operations/vfs/resize-file"},{"title":"Call VFS function","deprecated":null,"version":null,"sidebarTitle":"call","openapi":"/openapi.yaml post /v1/workspaces/{workspace_id}/vfs/{name}","href":"/api/operations/vfs/call-vfs-function"}]},{"group":"Agent Instructions","pages":[{"title":"Read VFS.md","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/workspaces/{workspace_id}/vfs-md","href":"/api/operations/documents/read-vfsmd"},{"title":"Write VFS.md","deprecated":null,"version":null,"openapi":"/openapi.yaml put /v1/workspaces/{workspace_id}/vfs-md","href":"/api/operations/documents/write-vfsmd"},{"title":"Read SKILL.md","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/workspaces/{workspace_id}/skill-md","href":"/api/operations/documents/read-skillmd"},{"title":"Write SKILL.md","deprecated":null,"version":null,"openapi":"/openapi.yaml put /v1/workspaces/{workspace_id}/skill-md","href":"/api/operations/documents/write-skillmd"}]},{"group":"Approval requests","pages":[{"title":"List asks","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/workspaces/{workspace_id}/asks","href":"/api/operations/asks/list-asks"},{"title":"Respond to ask","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/workspaces/{workspace_id}/asks/{ask_id}","href":"/api/operations/asks/respond-to-ask"}]},{"group":"Commands","pages":[{"title":"List commands","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/workspaces/{workspace_id}/lines","href":"/api/operations/lines/list-commands"},{"title":"Get command","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/workspaces/{workspace_id}/lines/{line_id}","href":"/api/operations/lines/get-command"},{"title":"Write stdin","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/workspaces/{workspace_id}/lines/{line_id}/stdin","href":"/api/operations/lines/write-stdin"},{"title":"Close stdin","deprecated":null,"version":null,"openapi":"/openapi.yaml delete /v1/workspaces/{workspace_id}/lines/{line_id}/stdin","href":"/api/operations/lines/close-stdin"}]},{"group":"Jobs","pages":[{"title":"List jobs","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/workspaces/{workspace_id}/jobs","href":"/api/operations/jobs/list-jobs"},{"title":"Get job","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/workspaces/{workspace_id}/jobs/{job_id}","href":"/api/operations/jobs/get-job"}]},{"group":"Processes","pages":[{"title":"List processes","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/workspaces/{workspace_id}/processes","href":"/api/operations/processes/list-processes"},{"title":"Get process","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/workspaces/{workspace_id}/processes/{pid}","href":"/api/operations/processes/get-process"}]},{"group":"Machines","pages":[{"title":"List machines","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/workspaces/{workspace_id}/machines","href":"/api/operations/machines/list-machines"},{"title":"Get machine","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/workspaces/{workspace_id}/machines/{machine_id}","href":"/api/operations/machines/get-machine"}]}]},{"group":"Configuration","pages":[{"group":"Templates","pages":[{"title":"List templates","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/templates","href":"/api/operations/templates/list-templates"},{"title":"Create template","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/templates","href":"/api/operations/templates/create-template"},{"title":"Get template","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/templates/{ref}","href":"/api/operations/templates/get-template"},{"title":"Delete template","deprecated":null,"version":null,"openapi":"/openapi.yaml delete /v1/templates/{ref}","href":"/api/operations/templates/delete-template"},{"title":"Restore template","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/templates/{ref}/restore","href":"/api/operations/templates/restore-template"}]},{"group":"Policies","pages":[{"title":"List policies","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/policies","href":"/api/operations/policies/list-policies"},{"title":"Create policy","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/policies","href":"/api/operations/policies/create-policy"},{"title":"Get policy","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/policies/{ref}","href":"/api/operations/policies/get-policy"},{"title":"Update policy","deprecated":null,"version":null,"openapi":"/openapi.yaml put /v1/policies/{ref}","href":"/api/operations/policies/update-policy"},{"title":"Delete policy","deprecated":null,"version":null,"openapi":"/openapi.yaml delete /v1/policies/{ref}","href":"/api/operations/policies/delete-policy"}]},{"group":"VFS","pages":[{"title":"List VFS","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/vfs","href":"/api/operations/saved-vfs/list-vfs"},{"title":"Create VFS","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/vfs","href":"/api/operations/saved-vfs/create-vfs"},{"title":"List VFS types","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/vfs/types","href":"/api/operations/saved-vfs/list-vfs-types"},{"title":"Get VFS","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/vfs/{ref}","href":"/api/operations/saved-vfs/get-vfs"},{"title":"Update VFS","deprecated":null,"version":null,"openapi":"/openapi.yaml put /v1/vfs/{ref}","href":"/api/operations/saved-vfs/update-vfs"},{"title":"Delete VFS","deprecated":null,"version":null,"openapi":"/openapi.yaml delete /v1/vfs/{ref}","href":"/api/operations/saved-vfs/delete-vfs"}]},{"group":"CLI","pages":[{"title":"List CLIs","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/clis","href":"/api/operations/saved-clis/list-clis"},{"title":"Create CLI","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/clis","href":"/api/operations/saved-clis/create-cli"},{"title":"List CLI types","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/clis/types","href":"/api/operations/saved-clis/list-cli-types"},{"title":"Get CLI","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/clis/{ref}","href":"/api/operations/saved-clis/get-cli"},{"title":"Update CLI","deprecated":null,"version":null,"openapi":"/openapi.yaml put /v1/clis/{ref}","href":"/api/operations/saved-clis/update-cli"},{"title":"Delete CLI","deprecated":null,"version":null,"openapi":"/openapi.yaml delete /v1/clis/{ref}","href":"/api/operations/saved-clis/delete-cli"}]},{"group":"Runtime","pages":[{"title":"List runtimes","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/runtimes","href":"/api/operations/saved-runtimes/list-runtimes"},{"title":"Create runtime","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/runtimes","href":"/api/operations/saved-runtimes/create-runtime"},{"title":"List runtime types","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/runtimes/types","href":"/api/operations/saved-runtimes/list-runtime-types"},{"title":"Get runtime","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/runtimes/{ref}","href":"/api/operations/saved-runtimes/get-runtime"},{"title":"Update runtime","deprecated":null,"version":null,"openapi":"/openapi.yaml put /v1/runtimes/{ref}","href":"/api/operations/saved-runtimes/update-runtime"},{"title":"Delete runtime","deprecated":null,"version":null,"openapi":"/openapi.yaml delete /v1/runtimes/{ref}","href":"/api/operations/saved-runtimes/delete-runtime"}]},{"group":"Machine","pages":[{"title":"List machines","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/machines","href":"/api/operations/saved-machines/list-machines"},{"title":"Create machine","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/machines","href":"/api/operations/saved-machines/create-machine"},{"title":"List machine types","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/machines/types","href":"/api/operations/saved-machines/list-machine-types"},{"title":"Get machine","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/machines/{ref}","href":"/api/operations/saved-machines/get-machine"},{"title":"Update machine","deprecated":null,"version":null,"openapi":"/openapi.yaml put /v1/machines/{ref}","href":"/api/operations/saved-machines/update-machine"},{"title":"Delete machine","deprecated":null,"version":null,"openapi":"/openapi.yaml delete /v1/machines/{ref}","href":"/api/operations/saved-machines/delete-machine"}]}]},{"group":"Server","pages":[{"group":"Service","pages":[{"title":"Check health","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/health","href":"/api/operations/service/check-health"}]},{"group":"Daemon","pages":[{"title":"Check readiness","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v1/daemon/ready","href":"/api/operations/daemon/check-readiness"},{"title":"Shut down server","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v1/daemon/shutdown","href":"/api/operations/daemon/shut-down-server"}]}]}]}]},"basePath":"","title":"Set profile - Mirage","buildId":"dpl_42LwxxU1kGN114H4XzwGYXa9ZDah","deploymentId":"dpl_42LwxxU1kGN114H4XzwGYXa9ZDah","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-C-hEh3I2.js","utils-CnF4QiUD.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-C7PVNbel.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-8ytevL2A.js","snippetPresets-BT1alx3v.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","conditional-requirements-CFM0id0Q.js","ApiExamples-BLXC0i_W.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-CyLIGI9_.js","shallow-DC0lGVIW.js","getApiPlaygroundDisplay-CgDQ85tN.js","CodeSnippet-6-I-Gpv9.js","CodeSnippets-BAk1kDdu.js","Page-C945cI-W.js","getPastedJson-B276RuWN.js","icon-BqP8etTm.js","MethodPill-DM6sbxG1.js","DuplicateIcon-PyJglOaE.js","createIcon-CMeOMAc_.js","DynamicMarkdown-BoyYAA8K.js","SectionHeading-DAYv3gvZ.js","axios-vUo_bRtp.js","Markdown-BhTTmazV.js","clsx-CR-RHrVC.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-CBUH0-zX.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-BmARFYNC.js"]}