AI chat

A second icon in the Activity Bar, Chat, opens one AI conversation that is not tied to a spec phase or a workflow step. It runs through the same ai@1 plugin everything else here runs through, so the runtime, the model, the MCP servers, the steering files and the folder limit all behave the way they do in a spec.

On by default. The sidebarChat feature flag hides the icon, the view and its commands. Chats already saved stay on disk.

  1. 1. What is on screen
  2. 2. Which runtime it starts on
  3. 3. The editor context chip
  4. 4. What the turn changed
  5. 5. Tools and MCP servers
  6. 6. History
  7. 7. Chat in an editor tab
  8. 8. Steering files, and the folder limit
  9. 9. What it does not do
  10. Next

1. What is on screen

Part What it is
The thread what you asked, what the agent answered, each tool call it made, and any question or permission card waiting on you
The compose box your message. Enter sends, Shift+Enter is a new line
The title bar New Chat, Chat History, Chat Logs, Move to Editor, New Chat in Editor
The changed-files bar above the compose box after a turn that wrote anything — see 4

The compose box carries the same row of pickers a spec phase has: runtime, mode (only a runtime that has modes), model, permissions, the context meter, Tools and MCP servers, / file search and attachments. At sidebar width the last few fold into the … button.


2. Which runtime it starts on

A new chat starts on the first runtime listed in ai.providers in settings.json. With no list it starts on whatever settings.json says — the same default a spec phase gets.

  1. The pick is this chat’s own. Changing the runtime or the model in the chat changes that chat. It does not touch the workspace pick the spec panel uses.
  2. Once a chat has started, its runtime is locked. It keeps running on the runtime it started on. To move a started one, click Handover, pick the runtime and model, and click Start: the conversation is written to .local-workflows/handovers/ in the workspace and a new session on the new runtime reads it and tells you where things stand. See Switching.
  3. A new model reopens the conversation on that model, carrying the thread so far. That costs one full-price turn.
  4. The permissions dropdown is shared with the spec panel. Allow all or Manual approvals is one “how much do I trust the agent today” switch for the window, not a per-chat choice. See approving each request yourself.

3. The editor context chip

A chip in the compose row shows the file open in the editor.

  1. It is off by default — a dashed border. The file is only suggested, and nothing about it is sent.
  2. Click it to turn it on — a solid border. From then on the open file, and the lines selected in it, go with every message.
  3. It stays on when you switch files, and turns off when you click it again or when another chat is put on screen.

It used to be on by default. That cost tokens on every message and could point the agent at a file the question was not about.


4. What the turn changed

After each turn, a bar above the compose box lists every file the turn added, changed or deleted — whoever wrote it, the agent’s own tools or a command it ran.

Opened, each file opens the editor’s diff (before the turn on the left, now on the right) and has its own Undo. Keep and Undo all act on the lot, and either one is written into the chat’s file, so a reload shows the same bar.

Undo puts a changed or deleted file back as it was before the turn, and moves an added file to the trash. A file changed again since the turn is asked about first; a file open with unsaved edits is refused.

Limits: nothing outside a git repository, files git ignores are not seen, and only the newest turn with changes is shown. The comparison is made by writing the working tree into git as a tree through a temporary copy of the index — your real index, your branch and your working files are never touched.


5. Tools and MCP servers

Two pickers on the compose row decide what the next session gets.

Picker What it offers
MCP servers every server declared under ai.mcpServers, less the ones switched off there. Works on every runtime
Tools the runtime’s own built-in tools. Copilot lists them itself. Claude only names them when a session starts, so the list appears after the first session has run — it is kept in ~/.local-workflows/state/claude-tools.json. Kiro and other ACP agents get no Tools picker: ACP gives no way to switch an agent’s tools off

The claude.ai account’s own connectors (Gmail, Drive and the rest) are one entry in the MCP picker, on Claude only, and off unless you tick it by hand. Auto leaves them off.

Tools and servers are fixed when a session starts. Changing the pick reopens the conversation on the next message, the same as changing the model — which costs one full-price turn.

The pick is kept per chat.


6. History

Chat History in the title bar swaps the thread for a list. Opening a chat or pressing Back swaps it back. A filter box at the top narrows both sections.

Section What is in it
Chats this workspace’s chats, newest first
Spec phases every spec phase or implementation chat with a conversation on screen today
  1. A chat is named by its first message, without the editor line. Rename sets a name by hand; an empty name goes back to the first message.
  2. Delete asks first, then deletes the chat’s file. The runtime’s own transcript is not touched. Deleting the chat on screen starts a new one.
  3. A spec phase can only be opened — in the spec panel, on that phase. Rename and delete are not offered: a phase’s history belongs to the spec.
  4. Switching chats is refused while the agent is working.
  5. One chat is never on screen twice. Opening a chat the sidebar or a tab already shows puts that one in front, and deleting it is refused until it is closed there.

Each chat is one file: ~/.local-workflows/events/<workspace>/chats/<chat id>.jsonl, appended as the chat goes and read back whole when you reopen it. See What a run printed.


7. Chat in an editor tab

The sidebar is narrow. Two buttons in its title bar move the chat out of it:

Button What it does
Move to Editor puts the sidebar’s chat into an editor tab beside the editor. The thread, a running turn and the session all go with it — the chat moves, it is not copied. The sidebar starts a new chat
New Chat in Editor opens a new, empty chat in a tab

A tab has its own New Chat, Chat History and Chat Logs buttons in the editor title bar, and VS Code’s own Move into New Window on the tab puts the chat in a separate window.

  1. Closing a tab stops its running turn and ends its session. The chat’s file stays, so History still lists it and it can be opened again.
  2. After a window reload a tab comes back with its thread. The next message opens the conversation again, the same as the sidebar.

8. Steering files, and the folder limit

Both behave exactly as they do in a spec phase.

  • always steering files are attached to the first message, #name pulls in a manual one for that one message, and a tagged file reaches the agent through the steering tool. See Steering files.
  • A session may read and write in the task’s folder and the folders open in the editor, and nothing else. See where a session may read and write.

9. What it does not do

  1. No inline edits in the editor.
  2. No list of older turns’ changes — only the newest turn with changes.
  3. No @ symbol or folder mentions, and no restore point per turn.

Next


Back to top

Local Workflows is a VS Code extension. Everything it does is declared in a YAML file you own.


- 11-Oct-2026 07:45 PM +0000