Skip to content
| Marketplace
Sign in
Visual Studio Code>Other>Istari AINew to Visual Studio Code? Get it now.
Istari AI

Istari AI

Tuyen Pham

|
2 installs
| (0) | Free
Bridge between VS Code and the istari CLI - approve gated actions and steer running sessions from the editor.
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

istari AI

A VS Code companion extension for the istari CLI - a general bridge between the editor and the CLI over a local socket. Today you can approve or deny istari's gated actions, watch its live thinking and report, and steer a running session from VS Code instead of the terminal; more interactions can be added over the same socket.

How it works

While this extension is active it exports ISTARI_AI_SOCKET into the window's integrated terminals, so any istari run started here binds the socket automatically - no --approval-socket flag needed (passing the flag still works and wins). istari offers each gated permission prompt over that socket; the extension shows a modal dialog with Approve, Always allow, and Deny buttons, and your choice is sent straight back.

If VS Code is not connected (or you dismiss the dialog), istari falls back to its normal terminal prompt - nothing stalls. Concurrent prompts are serialized, so you always answer one at a time.

sequenceDiagram
    participant istari
    participant Socket as .istari/istari.sock
    participant VS Code as VS Code extension

    istari->>Socket: bind socket
    VS Code->>Socket: connect
    istari->>VS Code: permission_request
    VS Code->>istari: {"decision":"approve"}
    Note over VS Code: modal dialog

Usage

  1. Build and install this extension (see Development below).

  2. Open a terminal in this window and run istari normally - no flag needed:

    istari ticket-review <jira-url>
    

    (Terminals opened before the extension activated won't have the env var yet; open a fresh one. The istari: Run istari in a terminal command also works.)

  3. The status bar shows istari: connected once linked. Approval prompts appear as modal dialogs.

Chat: watch, steer, and run

The @istari chat participant reuses VS Code's built-in chat - no separate UI:

  • @istari /watch - stream the running agent's thinking and report here.
  • @istari /reasoning - stream only the thinking (reasoning) progress.
  • @istari /report - stream only the report/output and the final result.
  • @istari /run <args> - start a run in a terminal (e.g. /run ticket-review <url>) and stream it here.
  • @istari <message> - steer the run: the message is queued and folded into the agent's next pass (istari can't interrupt a pass mid-flight, so it applies at the next draft/repair/refine/steer pass). Steering never changes permission decisions.

Streaming into chat needs an open chat turn, so start with /run (or invoke /watch while a run is active). Cancel the chat response to stop watching; approvals still appear as modal dialogs.

CI / headless: omit the extension and use --yes (approve-all) or run without a TTY; istari handles non-interactive approval on its own.

Windows: istari uses a named pipe instead of a Unix socket. Set istari.socketPath to a pipe path (e.g. \\.\pipe\istari-ai); the extension exports it the same way.

Settings

Setting Default Description
istari.socketPath .istari/istari.sock Socket path istari binds. Relative paths resolve to the workspace folder.
istari.autoConnect true Connect automatically whenever the socket appears.
istari.binaryPath istari Executable used by the Run istari in a terminal command.

Commands

  • istari: Run istari in a terminal - launch istari in a terminal wired to this extension (you supply the subcommand + args).
  • istari: Connect to the istari socket - connect now.
  • istari: Disconnect from the istari socket - drop the connection.

Development

npm install
npm run compile      # or: npm run watch

Press F5 in VS Code to launch an Extension Development Host.

Wire protocol

Line-delimited JSON, one object per line:

// istari -> extension
{ "type": "permission_request", "id": 1, "action": "run a shell command",
  "command": "rm -rf build", "intention": "clean the build dir", "risk": "destructive" }

// istari -> extension (live run stream, rendered by @istari chat)
{ "type": "run_start" }
{ "type": "reasoning", "text": "…thinking tokens…" }
{ "type": "report", "text": "…agent message tokens…" }
{ "type": "status", "text": "calling tool 'grep'" }
{ "type": "result", "text": "…final rendered deliverable…" }
{ "type": "run_end" }

// extension -> istari (approval verdict)
{ "id": 1, "decision": "approve" } // or "deny" | "always"

// extension -> istari (steering, from @istari chat)
{ "type": "steer", "text": "also cover the error-handling path" }
  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
© 2026 Microsoft