Run Agents in the Editor Terminal.
- Launch your favorite agent/REPL in an editor‑area terminal.
- Pick a profile and go. No duplicate sends — the terminal is reused.
- Editor button + keybinding to launch.
- Reuses the same terminal; no duplicate commands are sent.
- QuickPick between multiple profiles (Codex, Claude Code, Gemini, Qwen).
- Smart cwd modes: workspace root, active workspace/file dir, or prompt.
- Optional status bar action.
- Windows: WSL wrapper or block with guidance.
- Install the extension.
- Open a file and click the terminal icon (or run
Agent: Run Agent). - If prompted, add a profile in settings.
Add or tweak profiles and behavior in settings.json:
{
"agentterminal.profiles": [
{ "id": "codex", "label": "Codex", "command": "codex", "args": ["-p", "brain"] },
{ "id": "claude", "label": "Claude Code", "command": "claude" }
],
"agentterminal.cwdMode": "workspaceRoot", // workspaceRoot | activeWorkspace | activeFileDir | prompt
"agentterminal.rememberSelection": true, // remember pick in prompt mode
"agentterminal.showStatusBar": false, // adds an "Agent" status bar button
"agentterminal.windowsMode": "block" // block | wsl | native
}
- Put flags in
args, e.g.,"args": ["-p", "profile"]. - Use
terminalNameto control the reusable terminal’s name. - Set an icon via codicon (e.g.,
"$(zap)") or an image path.
Requirements
- VS Code 1.75+ (engines.vscode ^1.75.0).
- At least one REPL CLI installed and available on your PATH (or set an absolute path in a profile), e.g.,
codex,claude,gemini,qwen. - Platform support:
- macOS and Linux: officially supported.
- Windows: experimental. Prefer running your CLI inside WSL.
- To auto-wrap commands with WSL, set
agentterminal.windowsModeto"wsl". - Default behavior is
agentterminal.windowsMode: "block"which shows an error and suggests WSL.
- To auto-wrap commands with WSL, set
Install / Run (development)
- Open this folder in VS Code.
- Press F5 (Run Extension) to launch an Extension Development Host. The TypeScript build runs automatically and writes to
out/. - Open any file in the Dev Host window. A terminal icon appears at the top‑right of the editor.
- Click the button (or use the command palette) to open the terminal and run the selected profile’s command.
Usage
- Editor title button: click the terminal icon in the top‑right when an editor has focus.
- Command Palette: "Agent: Run Agent" (command id:
agentterminal.run). - Keybinding:
Cmd+Shift+.(macOS). Customize in Keyboard Shortcuts to suit your OS.
Settings
agentterminal.profiles(array)- List of REPL profiles to choose from. Each profile has:
id(string) unique idlabel(string) shown in QuickPickcommand(string) base command to executeargs(string[], optional) arguments appended after the commandterminalName(string, optional) override the terminal’s name; default is<label>icon(string, optional) icon source: relative path (to the extension), absolute filesystem path, afile:///...URI, or a codicon id like$(zap)
- List of REPL profiles to choose from. Each profile has:
Verified CLI binaries (suggested commands)
- Codex CLI: command
codex(install vianpm i -g @openai/codexorbrew install codex). See: https://developers.openai.com/codex/cli/ - Claude Code: command
claude(install vianpm i -g @anthropic-ai/claude-codeor native installers). See: https://docs.anthropic.com/en/docs/claude-code/cli-reference - Gemini CLI: command
gemini(install vianpm i -g @google/gemini-clior Homebrew). See: https://developers.google.com/gemini-code-assist/docs/gemini-cli - Qwen Code: command
qwen(install vianpm i -g @qwen-code/qwen-codeor Homebrew). See: https://github.com/QwenLM/qwen-code
Default profiles
- The extension seeds four example profiles (Codex, Claude Code, Gemini CLI, Qwen Code) with simple
media/profile-*.svgicons so tabs are visually distinct. You can replace these with your own assets or use codicon ids (e.g.,$(flame)). agentterminal.windowsMode(string, default:"block")- Windows handling.
block: show an error (recommended).wsl: invoke viawsl.exe.native: run as-is (experimental).
- Windows handling.
agentterminal.showStatusBar(boolean, default:false)- Show a status bar action (right side) labeled "Agent" that runs
agentterminal.runfrom anywhere.
- Show a status bar action (right side) labeled "Agent" that runs
agentterminal.cwdMode(string, default:"workspaceRoot")- How to choose the working directory:
workspaceRoot: use the first workspace folder (default).activeWorkspace: use the workspace containing the active editor’s file.activeFileDir: use the directory of the active file.prompt: when multiple folders are open, prompt to pick one (optionally remembered).
- How to choose the working directory:
agentterminal.rememberSelection(boolean, default:true)- In
promptmode, remember the last selected folder and reuse it next time.
- In
Behavior notes
-
Workspace folder: chooses
cwdperagentterminal.cwdMode. Without a workspace, the terminal launches in the shell’s default location. -
Profiles:
- 0 profiles → you’ll be prompted to add samples or open settings.
- 1 profile → runs immediately.
-
1 profiles → QuickPick to choose a profile (always shown).
-
Terminal reuse: reuses the terminal matching the profile’s name (default
<label>) when alive; recreates it automatically if the shell exited (e.g., after typingexit). -
Send behavior: the command is sent only when creating a new terminal; clicking the button again focuses the existing terminal without re-sending. Close the terminal (or type
exit) to run again. -
Args assembly: the final command sent is
<command> <quoted args...>with quoting rules suited to your OS. Put flags inargsfor reliability. Composite items like-p brainare tokenized to-pandbrainautomatically. -
Windows: you can auto-wrap with WSL (
wsl.exe <command> ...) whenagentterminal.windowsModeis set towsl. Native Windows support is experimental. -
Status bar: when enabled via
agentterminal.showStatusBar, the button appears on startup and updates live when toggling the setting.
Troubleshooting
- "command not found": Ensure the selected REPL is installed and on your PATH, or set your profile’s
commandto an absolute path. - No toolbar button: The button only shows when an editor has focus and the extension is active (invoke the command once if needed).
- Integration tests require a VS Code Electron host; in sandboxed environments these may fail with SIGABRT or sandbox errors. Run
npm run test:integrationlocally (outside sandbox) or allow elevated permissions when prompted.
Roadmap (high level)
- REPL profiles + QuickPick — done.
- Smarter cwd selection for multi‑root workspaces — done.
- Optional status bar action (toggleable) — done.
Contributing
- Open issues/PRs are welcome. The code is intentionally minimal; the extension and helpers are written in TypeScript (
src/*.ts).
Publishing
- Package locally:
npx vsce package(ornpm run vscode:package). This producesagent-terminal-<version>.vsix. - Install locally:
code --install-extension agent-terminal-*.vsix. - VS Code Marketplace:
- Create a Publisher in the VS Code Marketplace and generate an Azure DevOps PAT with scope "Marketplace: Publish".
- Publish:
npx vsce publish -p $VSCE_TOKEN(ornpm run vscode:publishaftervsce login <publisher>).
- Open VSX:
- Create an Open VSX account and token.
- Publish:
npx ovsx publish agent-terminal-*.vsix -p $OVSX_TOKEN(ornpm run ovsx:publish).
- CI/CD:
- Tags matching
v*trigger.github/workflows/release.yml: runs tests, packages, uploads the VSIX artifact, and publishes whenVSCE_TOKENand/orOVSX_TOKENsecrets are present. - Configure repo secrets
VSCE_TOKENandOVSX_TOKENto enable publishing.
- Tags matching
License
- MIT — see
LICENSE.


