A Visual Studio extension that runs the local Codex CLI app server from inside the IDE and exposes it through a chat tool window: streaming responses, approval-aware command and file-change handling, slash commands, and workspace context.
The extension is an out-of-process Microsoft.VisualStudio.Extensibility extension (net8.0) that starts a net8.0 worker process. The worker owns the codex app-server subprocess and talks to it with newline-delimited JSON-RPC over stdio. No credentials are handled inside Visual Studio; sign-in happens in the Codex CLI.
Scope
The Visual Studio extension recognizes Codex commands only when / is the first
input character. Commands are resolved by an allowlisted catalog and are never
sent to the model as prompt text. A leading // escapes command mode and sends
one literal leading slash.
The implementation is tracked by GitHub Issue #46 and its four sub-issues.
Supported commands
| Category |
Commands |
Behavior |
| App Server operations |
/compact, /feedback, /fork, /goal, /mcp, /review |
Invoke dedicated typed Worker RPC methods. |
| Next-turn settings |
/fast, /model, /permissions (/approve alias), /personality, /plan, /reasoning |
Update typed fields used by the next turn/start. Except for picker selections, these settings are consumed by the next started turn. |
| Visual Studio operations |
/ide-context, /init, /status |
Toggle bounded editor context, safely create AGENTS.md, or show local session state. |
The following commands remain hidden because the app-server or the current
single-thread UI cannot preserve their official semantics:
/cloud, /cloud-environment, /local, /memories, /project,
and /side. Direct input produces a local unsupported message.
/review supports uncommitted changes, a base branch, a commit, or custom
instructions. /goal supports show (alias: get), set, edit, pause, resume,
and clear. Goal objectives contain between 1 and 4,000 characters. /model
matches the catalog case-insensitively and applies the canonical model id.
/permissions is the canonical approval-mode command; /approve is a compatibility
alias. With no argument it shows the desired default, the app-server-reported effective
state, and available stable IDs. Built-ins are ask, auto, full, and custom;
runtime profiles use permission:<id>. Full access requires confirmation because it
disables the Codex sandbox and normal approval prompts, so operations may run without an
extension approval request. Returning from a turn override to custom requires a new
thread; omission or null is not treated as a reset.
/plan without arguments selects Plan mode for the next turn. With arguments,
it immediately starts a Plan-mode turn using the supplied prompt.