What exists today: the CLI in your editor’s terminal, and an Agent Client Protocol server over stdio. There is no packaged extension.
If you want Cortex in your editor, read this page before you go looking for a plugin: there is no packaged or marketplace-tested editor extension for Cortex CLI. Two things do work today. You can run the CLI in your editor’s built-in terminal, and you can connect an editor that speaks the Agent Client Protocol to a local server the CLI starts for exactly that purpose.This page covers both, what the protocol server implements and what it does not, why connecting an editor never changes the approval flow, and what an editor adapter is allowed to do. It is deliberately short on promises, because most of this surface is not built yet.
There is no packaged or marketplace-tested editor extension. Running Cortex inside an editor’s terminal does not establish compatibility with any particular editor, editor fork, or protocol client, and the local client SDK is an integration building block rather than a supported product surface.
This is the path that works everywhere, because there is nothing to integrate. Open your editor’s terminal, run cortex, and you get the TUI exactly as you would in any other terminal: the timeline, the composer, the approval prompt, the panels. There is no separate extension UI, no side panel, and no editor commands.Everything else in the CLI documentation applies unchanged. The session runs in whatever directory the terminal is in, so start it at your project root, or pass --cwd.
For editors that speak the Agent Client Protocol, the CLI can act as the agent side of that conversation:
cortex acp --stdio
Standard input and output is the only supported transport. The command also parses --port, --host, --agent, --allow-tool and --deny-tool, and then rejects them: they fail closed before the server starts rather than running with wider authority than was requested. Treat cortex acp --stdio as the whole command surface.
session/load, session/list, models/list and agents/list are not implemented. Prompts are text-only. And the load-bearing one: approval requests are denied rather than auto-approved, because no permission round trip is advertised to the client. An editor connected this way cannot answer an approval prompt on your behalf, so a task that needs one will not proceed through it.
The /ide slash command, described in the built-in list as managing IDE integration, is the in-session front end for the same protocol over standard input and output. The important half is that approvals are unchanged: connecting an editor does not widen the permission model, does not pre-approve anything, and does not bypass the prompt.Which editors can be paired, and what the pairing flow looks like, is not documented. If you need that, watch the changelog rather than guessing from the command’s presence.
If you are the one building the integration, the client SDK gives you a small, deliberate surface. An adapter can start a session, render streamed text and tool observations, keep the returned session id, resume that session for a follow-up the user asked for, and await a cancellation. The SDK does not expose write approvals or arbitrary execution-policy settings, so an adapter cannot widen what a session is allowed to do.Two requirements from the same guide are worth stating because users can observe them:
An adapter must require workspace trust and explicit user initiation. It never starts on activation or because a file was opened.
The user selects the workspace root, and only explicitly selected context is sent.
Say it plainly, so nobody builds a workflow on it:
No packaged editor extension, for any editor.
No session listing or loading, model listing, or agent listing over the protocol.
No transport other than standard input and output.
No editor-side file opening and no diff pane. You review changes in the CLI itself, through the approval prompt and the timeline. See Modes and permissions.
Cortex pr --apply remains unsupported. It fails before repository or account access rather than reporting that changes were applied.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Cortex Docs","description":"Documentation for Cortex Chat, Cortex Code, Cortex Bot, Cortex Design, Cortex Security, and the Cortex CLI.","colors":{"primary":"#1F4945","light":"#8AC5B9","dark":"#163834"},"logo":{"light":"https://mintcdn.com/cortex-foundation-add13747/I4NDIuFTyx6efzAn/logo/wordmark-light.svg?fit=max\u0026auto=format\u0026n=I4NDIuFTyx6efzAn\u0026q=85\u0026s=5d7f828580cfd7cbf2e13b794bb8a196","dark":"https://mintcdn.com/cortex-foundation-add13747/I4NDIuFTyx6efzAn/logo/wordmark-dark.svg?fit=max\u0026auto=format\u0026n=I4NDIuFTyx6efzAn\u0026q=85\u0026s=2c6fa3576137302db36b4c848e1ca727","href":"https://docs.cortex.foundation"},"favicon":"https://mintcdn.com/cortex-foundation-add13747/cTqaVybp8j66cB-n/favicon.svg?fit=max\u0026auto=format\u0026n=cTqaVybp8j66cB-n\u0026q=85\u0026s=449d788341f3cf8bec86ba865581080c","appearance":{"default":"system"},"navbar":{"links":[{"href":"https://cortex.foundation","label":"Website"},{"href":"https://status.cortex.foundation","label":"Status"}],"primary":{"type":"button","label":"Open Cortex","href":"https://cortex.foundation"}},"footer":{"socials":{"github":"https://github.com/CortexLM","website":"https://cortex.foundation"},"links":[{"header":"Products","items":[{"label":"Chat","href":"/chat"},{"label":"Code","href":"/code"},{"label":"Bot","href":"/bot"},{"label":"CLI","href":"/cli"},{"label":"Design","href":"/design"},{"label":"Security","href":"/security"}]},{"header":"Resources","items":[{"label":"Quickstart","href":"/getting-started/quickstart"},{"label":"Ways to run Cortex","href":"/getting-started/downloads"},{"label":"Troubleshooting","href":"/getting-started/troubleshooting"},{"label":"Error codes","href":"/problems"},{"label":"Changelog","href":"/changelog"}]},{"header":"Cortex","items":[{"label":"Website","href":"https://cortex.foundation"},{"label":"System status","href":"https://status.cortex.foundation"},{"label":"Privacy","href":"https://cortex.foundation/privacy"},{"label":"Terms","href":"https://cortex.foundation/terms"}]}]},"search":{"prompt":"Search the Cortex docs..."},"seo":{"metatags":{"og:site_name":"Cortex Docs"},"organization":{"name":"Cortex","url":"https://cortex.foundation"}},"errors":{"404":{"redirect":false,"title":"Page not found","description":"That path is not in the Cortex docs. Try the [Quickstart](/getting-started/quickstart), or pick a product: [Chat](/chat), [Code](/code), [Bot](/bot), [CLI](/cli), [Design](/design), [Security](/security). If an error message sent you here, the [problem catalog](/problems) explains it."}},"contextual":{"options":["copy","view","mcp"],"display":"header"},"styling":{"latex":true},"navigation":{"global":{"anchors":[{"anchor":"Changelog","icon":"clock-rotate-left","href":"/changelog"},{"anchor":"System status","icon":"signal","href":"https://status.cortex.foundation"},{"anchor":"cortex.foundation","icon":"globe","href":"https://cortex.foundation"}]},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"cortex-foundation-add13747","hasAudioNarration":false,"actualSubdomain":"cortex-foundation-add13747","customDomains":["docs.cortex.foundation"],"gitSource":{"type":"github","owner":"cortexlm","repo":"docs","deployBranch":"main","contentDirectory":"","isPrivate":false,"mountPath":"","label":""},"chroma":{"latestBuiltDeploymentHistoryId":"6abd06f22225218f6ce3da21","collectionId":"717e0fd1-a0e2-415d-98ca-6bdd58b8ec9d","liveDeploymentHistoryId":"6abd06f22225218f6ce3da21","schemaVersion":"v3"},"entitlements":{"AI_CHAT":{"status":"DISABLED"},"WEB_MCP":{"status":"DISABLED"}},"buildId":"6abd06f22225218f6ce3da21","clientVersion":"0.0.4044","searchFilterCounts":[{"language":"default","tag":"Reference","count":44},{"language":"default","tag":"CLI","count":28},{"language":"default","tag":"Chat","count":27},{"language":"default","tag":"Errors","count":25},{"language":"default","tag":"Problem codes","count":24},{"language":"default","tag":"Code","count":23},{"language":"default","tag":"Get started","count":22},{"language":"default","tag":"Bot","count":19},{"language":"default","tag":"Overview","count":14},{"language":"default","tag":"Design","count":12}]},"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":"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":"byok-sep-25","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":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","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":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"cli/editor","slug":"/cli/editor","pageMetadata":{"title":"Editor integration","description":"What exists today: the CLI in your editor's terminal, and an Agent Client Protocol server over stdio. There is no packaged extension.","icon":"pen-to-square","href":"/cli/editor"},"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: \"What exists today: the CLI in your editor’s terminal, and an Agent Client Protocol server over stdio. There is no packaged extension.\"\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`,pre:`pre`,span:`span`,strong:`strong`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,ul:`ul`,..._provideComponents(),...props.components},{CodeBlock,Heading,Table,Warning}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Table)_missingMdxReference(`Table`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsxs(_components.p,{children:[`If you want Cortex in your editor, read this page before you go looking for a plugin: there is no packaged or marketplace-tested editor extension for Cortex CLI. Two things do work today. You can run the CLI in your editor’s built-in terminal, and you can connect an editor that speaks the `,_jsx(_components.strong,{children:`Agent Client Protocol`}),` to a local server the CLI starts for exactly that purpose.`]}),`\n`,_jsx(_components.p,{children:`This page covers both, what the protocol server implements and what it does not, why connecting an editor never changes the approval flow, and what an editor adapter is allowed to do. It is deliberately short on promises, because most of this surface is not built yet.`}),`\n`,_jsx(Warning,{children:_jsx(_components.p,{children:`There is no packaged or marketplace-tested editor extension. Running Cortex inside an editor’s terminal does not establish compatibility with any particular editor, editor fork, or protocol client, and the local client SDK is an integration building block rather than a supported product surface.`})}),`\n`,_jsx(Heading,{level:`2`,id:`run-the-cli-in-your-editor’s-terminal`,children:`Run the CLI in your editor’s terminal`}),`\n`,_jsxs(_components.p,{children:[`This is the path that works everywhere, because there is nothing to integrate. Open your editor’s terminal, run `,_jsx(_components.code,{children:`cortex`}),`, and you get the TUI exactly as you would in any other terminal: the timeline, the composer, the approval prompt, the panels. There is no separate extension UI, no side panel, and no editor commands.`]}),`\n`,_jsxs(_components.p,{children:[`Everything else in the CLI documentation applies unchanged. The session runs in whatever directory the terminal is in, so start it at your project root, or pass `,_jsx(_components.code,{children:`--cwd`}),`.`]}),`\n`,_jsx(Heading,{level:`2`,id:`connect-an-editor-over-the-agent-client-protocol`,children:`Connect an editor over the Agent Client Protocol`}),`\n`,_jsx(_components.p,{children:`For editors that speak the Agent Client Protocol, the CLI can act as the agent side of that conversation:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`cortex`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` acp`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --stdio`})]}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`Standard input and output is the only supported transport. The command also parses `,_jsx(_components.code,{children:`--port`}),`, `,_jsx(_components.code,{children:`--host`}),`, `,_jsx(_components.code,{children:`--agent`}),`, `,_jsx(_components.code,{children:`--allow-tool`}),` and `,_jsx(_components.code,{children:`--deny-tool`}),`, and then `,_jsx(_components.strong,{children:`rejects`}),` them: they fail closed before the server starts rather than running with wider authority than was requested. Treat `,_jsx(_components.code,{children:`cortex acp --stdio`}),` as the whole command surface.`]}),`\n`,_jsx(Heading,{level:`3`,id:`what-the-server-implements`,children:`What the server implements`}),`\n`,_jsx(_components.p,{children:`Four methods, and no more:`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Method`}),_jsx(_components.th,{children:`Purpose`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`initialize`})}),_jsx(_components.td,{children:`Start the conversation with the client`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`session/new`})}),_jsx(_components.td,{children:`Open a session`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`session/prompt`})}),_jsx(_components.td,{children:`Send a prompt`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`session/cancel`})}),_jsx(_components.td,{children:`Cancel work in progress`})]})]})]}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.code,{children:`session/load`}),`, `,_jsx(_components.code,{children:`session/list`}),`, `,_jsx(_components.code,{children:`models/list`}),` and `,_jsx(_components.code,{children:`agents/list`}),` are `,_jsx(_components.strong,{children:`not implemented`}),`. Prompts are text-only. And the load-bearing one: approval requests are `,_jsx(_components.strong,{children:`denied`}),` rather than auto-approved, because no permission round trip is advertised to the client. An editor connected this way cannot answer an approval prompt on your behalf, so a task that needs one will not proceed through it.`]}),`\n`,_jsxs(Heading,{level:`2`,id:`/ide-inside-a-session`,children:[_jsx(_components.code,{children:`/ide`}),` inside a session`]}),`\n`,_jsxs(_components.p,{children:[`The `,_jsx(_components.code,{children:`/ide`}),` slash command, described in the built-in list as managing IDE integration, is the in-session front end for the same protocol over standard input and output. The important half is that approvals are `,_jsx(_components.strong,{children:`unchanged`}),`: connecting an editor does not widen the permission model, does not pre-approve anything, and does not bypass the prompt.`]}),`\n`,_jsxs(_components.p,{children:[`Which editors can be paired, and what the pairing flow looks like, is not documented. If you need that, watch the `,_jsx(_components.a,{href:`/changelog`,children:`changelog`}),` rather than guessing from the command’s presence.`]}),`\n`,_jsx(Heading,{level:`2`,id:`what-an-editor-adapter-may-do`,children:`What an editor adapter may do`}),`\n`,_jsxs(_components.p,{children:[`If you are the one building the integration, the client SDK gives you a small, deliberate surface. An adapter can start a session, render streamed text and tool observations, keep the returned session id, resume that session for a follow-up the user asked for, and await a cancellation. The SDK does `,_jsx(_components.strong,{children:`not`}),` expose write approvals or arbitrary execution-policy settings, so an adapter cannot widen what a session is allowed to do.`]}),`\n`,_jsx(_components.p,{children:`Two requirements from the same guide are worth stating because users can observe them:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`An adapter must require workspace trust and explicit user initiation. It never starts on activation or because a file was opened.`}),`\n`,_jsx(_components.li,{children:`The user selects the workspace root, and only explicitly selected context is sent.`}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`not-available-yet`,children:`Not available yet`}),`\n`,_jsx(_components.p,{children:`Say it plainly, so nobody builds a workflow on it:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`No packaged editor extension, for any editor.`}),`\n`,_jsx(_components.li,{children:`No session listing or loading, model listing, or agent listing over the protocol.`}),`\n`,_jsx(_components.li,{children:`No transport other than standard input and output.`}),`\n`,_jsxs(_components.li,{children:[`No editor-side file opening and no diff pane. You review changes in the CLI itself, through the approval prompt and the timeline. See `,_jsx(_components.a,{href:`/cli/modes-and-permissions`,children:`Modes and permissions`}),`.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`Cortex pr --apply`}),` remains unsupported. It fails before repository or account access rather than reporting that changes were applied.`]}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`related`,children:`Related`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.a,{href:`/cli/tui`,children:`The TUI`}),`, the interface you get in an editor terminal`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.a,{href:`/cli/modes-and-permissions`,children:`Modes and permissions`}),`, the approval flow an editor cannot bypass`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.a,{href:`/cli/slash-commands`,children:`Slash commands`}),`, where `,_jsx(_components.code,{children:`/ide`}),` sits in the built-in list`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.a,{href:`/cli/mcp`,children:`MCP servers in the CLI`}),`, the supported way to add capabilities`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.a,{href:`/cli/reference`,children:`Command reference`}),`, the supported command and flag list`]}),`\n`]})]})}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":"Editor integration","description":"What exists today: the CLI in your editor's terminal, and an Agent Client Protocol server over stdio. There is no packaged extension.","icon":"pen-to-square","href":"/cli/editor"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Run the CLI in your editor’s terminal","slug":"run-the-cli-in-your-editor’s-terminal","depth":2,"children":[]},{"title":"Connect an editor over the Agent Client Protocol","slug":"connect-an-editor-over-the-agent-client-protocol","depth":2,"children":[{"title":"What the server implements","slug":"what-the-server-implements","depth":3,"children":[]}]},{"title":"/ide inside a session","slug":"/ide-inside-a-session","depth":2,"children":[]},{"title":"What an editor adapter may do","slug":"what-an-editor-adapter-may-do","depth":2,"children":[]},{"title":"Not available yet","slug":"not-available-yet","depth":2,"children":[]},{"title":"Related","slug":"related","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"cortex-foundation-add13747","siteName":"Cortex Docs","title":"Editor integration - Cortex Docs","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-09-16T18:15:27.589Z","originalFileLocation":"cli/editor.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=\"What exists today: the CLI in your editor\u0026#x27;s terminal, and an Agent Client Protocol server over stdio. There is no packaged extension.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Cortex Docs\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/cortex-foundation-add13747/zTUuu-3-Fne1Xst9/_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/cortex-foundation-add13747/zTUuu-3-Fne1Xst9/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/cortex-foundation-add13747/zTUuu-3-Fne1Xst9/_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/cortex-foundation-add13747/zTUuu-3-Fne1Xst9/_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/cortex-foundation-add13747/zTUuu-3-Fne1Xst9/_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/cortex-foundation-add13747/zTUuu-3-Fne1Xst9/_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/cortex-foundation-add13747/zTUuu-3-Fne1Xst9/_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/cortex-foundation-add13747/zTUuu-3-Fne1Xst9/_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/cortex-foundation-add13747/zTUuu-3-Fne1Xst9/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Editor integration - Cortex Docs\">\u003cmeta data-mint-head property=\"og:description\" content=\"What exists today: the CLI in your editor\u0026#x27;s terminal, and an Agent Client Protocol server over stdio. There is no packaged extension.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Cortex Docs\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.cortex.foundation/cli/editor\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://cortex-foundation-add13747.mintlify.app/_mintlify/api/og/v2?division=Use+the+CLI\u0026amp;title=Editor+integration\u0026amp;description=What+exists+today%3A+the+CLI+in+your+editor%27s+terminal%2C+and+an+Agent+Client+Protocol+server+over+stdio.+There+is+no+packaged+extension.\u0026amp;theme=4a543c0e0cc1700bea6c8cd8\u0026amp;signature=61ef7e42dfc62112854838b9056cf9267c1b6fee7a895c2cd0c3ef9d661d785d\">\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=\"Editor integration - Cortex Docs\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"What exists today: the CLI in your editor\u0026#x27;s terminal, and an Agent Client Protocol server over stdio. There is no packaged extension.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://cortex-foundation-add13747.mintlify.app/_mintlify/api/og/v2?division=Use+the+CLI\u0026amp;title=Editor+integration\u0026amp;description=What+exists+today%3A+the+CLI+in+your+editor%27s+terminal%2C+and+an+Agent+Client+Protocol+server+over+stdio.+There+is+no+packaged+extension.\u0026amp;theme=4a543c0e0cc1700bea6c8cd8\u0026amp;signature=61ef7e42dfc62112854838b9056cf9267c1b6fee7a895c2cd0c3ef9d661d785d\">\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/cortex-foundation-add13747/zTUuu-3-Fne1Xst9/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Cortex Docs\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#1F4945\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.cortex.foundation/cli/editor\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/cli/editor.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://cortex.foundation/#organization\",\"name\":\"Cortex\",\"url\":\"https://cortex.foundation\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/cortex-foundation-add13747/I4NDIuFTyx6efzAn/logo/wordmark-light.svg?fit=max\u0026auto=format\u0026n=I4NDIuFTyx6efzAn\u0026q=85\u0026s=5d7f828580cfd7cbf2e13b794bb8a196\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.cortex.foundation#website\",\"name\":\"Cortex Docs\",\"url\":\"https://docs.cortex.foundation\",\"publisher\":{\"@id\":\"https://cortex.foundation/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.cortex.foundation/cli/editor#webpage\",\"url\":\"https://docs.cortex.foundation/cli/editor\",\"name\":\"Editor integration\",\"description\":\"What exists today: the CLI in your editor's terminal, and an Agent Client Protocol server over stdio. There is no packaged extension.\",\"dateModified\":\"2026-09-16T18:15:27.589Z\",\"isPartOf\":{\"@id\":\"https://docs.cortex.foundation#website\"},\"breadcrumb\":{\"@id\":\"https://docs.cortex.foundation/cli/editor#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.cortex.foundation/cli/editor#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Use the CLI\",\"item\":\"https://docs.cortex.foundation/cli/tui\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Editor integration\",\"item\":\"https://docs.cortex.foundation/cli/editor\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.cortex.foundation/cli/editor#article\",\"headline\":\"Editor integration\",\"name\":\"Editor integration\",\"description\":\"What exists today: the CLI in your editor's terminal, and an Agent Client Protocol server over stdio. There is no packaged extension.\",\"url\":\"https://docs.cortex.foundation/cli/editor\",\"mainEntityOfPage\":{\"@id\":\"https://docs.cortex.foundation/cli/editor#webpage\"},\"dateModified\":\"2026-09-16T18:15:27.589Z\",\"publisher\":{\"@id\":\"https://cortex.foundation/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.cortex.foundation#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Cortex Docs\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Cortex Docs","nav":{"global":{"anchors":[{"anchor":"Changelog","icon":"clock-rotate-left","href":"/changelog"},{"anchor":"System status","icon":"signal","href":"https://status.cortex.foundation"},{"anchor":"cortex.foundation","icon":"globe","href":"https://cortex.foundation"}]},"tabs":[{"tab":"Get started","icon":"rocket","pages":[{"title":"Get started","href":""}]},{"tab":"Chat","icon":"comments","pages":[{"title":"Chat","href":"/chat"}]},{"tab":"Code","icon":"code","pages":[{"title":"Code","href":"/code"}]},{"tab":"Bot","icon":"robot","pages":[{"title":"Bot","href":"/bot"}]},{"tab":"CLI","icon":"terminal","groups":[{"group":"Get started","icon":"rocket","pages":[{"title":"Cortex CLI","icon":"terminal","href":"/cli"},{"title":"Install the CLI","icon":"download","href":"/cli/install"},{"title":"Sign in to the CLI","sidebarTitle":"Sign in","icon":"right-to-bracket","href":"/cli/sign-in"},{"title":"CLI quickstart","icon":"rocket","href":"/cli/quickstart"}]},{"group":"Use the CLI","icon":"keyboard","pages":[{"title":"The TUI","icon":"window-maximize","href":"/cli/tui"},{"title":"Modes and permissions","icon":"sliders","href":"/cli/modes-and-permissions"},{"title":"Plan and Spec modes","icon":"list-check","href":"/cli/plan-mode"},{"title":"CLI sessions","sidebarTitle":"Sessions","icon":"clock-rotate-left","href":"/cli/sessions"},{"title":"Goals","icon":"bullseye","href":"/cli/goal"},{"title":"Slash commands","icon":"bolt","href":"/cli/slash-commands"},{"title":"CLI keyboard shortcuts","sidebarTitle":"Keyboard shortcuts","icon":"keyboard","href":"/cli/keyboard"},{"title":"Tools the agent uses","icon":"screwdriver-wrench","href":"/cli/tools"},{"title":"Cloud, This PC, and SSH","description":"Where a CLI session runs its tools: Cortex Cloud by default, with This PC and SSH as opt-in hosts that fail closed","icon":"server","href":"/cli/hosts"},{"title":"Editor integration","icon":"pen-to-square","href":"/cli/editor"}]},{"group":"Automate","icon":"gears","pages":[{"title":"Headless and one-shot runs","description":"cortex exec for scripts and automation, cortex run for a single streamed answer: autonomy levels, output formats, limits and exit codes","icon":"gears","href":"/cli/headless"},{"title":"CI cookbook","icon":"code-merge","href":"/cli/ci"}]},{"group":"Configure","icon":"sliders","pages":[{"title":"Configuration","icon":"gear","href":"/cli/configuration"},{"title":"Environment variables","icon":"list","href":"/cli/environment-variables"},{"title":"Data locations","icon":"folder-tree","href":"/cli/data-locations"},{"title":"Permission policy","icon":"file-shield","href":"/cli/policy"}]},{"group":"Extend","icon":"puzzle-piece","pages":[{"title":"MCP servers in the CLI","sidebarTitle":"MCP servers","icon":"server","href":"/cli/mcp"},{"title":"Skills in the CLI","sidebarTitle":"Skills","icon":"graduation-cap","href":"/cli/skills"},{"title":"Agents and subagents","icon":"sitemap","href":"/cli/agents"},{"title":"Hooks","icon":"link","href":"/cli/hooks"},{"title":"CLI plugins","sidebarTitle":"Plugins","icon":"puzzle-piece","href":"/cli/plugins"},{"title":"Themes","icon":"palette","href":"/cli/themes"}]},{"group":"Reference","icon":"book","pages":[{"title":"Command reference","icon":"book","href":"/cli/reference"},{"title":"CLI troubleshooting","icon":"life-ring","href":"/cli/troubleshooting"}]}]},{"tab":"Design","icon":"pen-ruler","pages":[{"title":"Design","href":"/design"}]},{"tab":"Security","icon":"shield-halved","pages":[{"title":"Security","href":"/security"}]},{"tab":"Reference","icon":"book-open","pages":[{"title":"Reference","href":"/reference/errors"}]}]},"basePath":"","title":"Editor integration - Cortex Docs","buildId":"dpl_DeHjVRGfFnhYQwHnfC2pjeXXv8h9","deploymentId":"dpl_DeHjVRGfFnhYQwHnfC2pjeXXv8h9","dynamics":[],"chunks":[]}