changelog
4.3.8 2026-10-14
Extension and twinny-server release: agent mode's changes can be undone from the reply, it follows the project's AGENTS.md, it sees the errors its edits cause, and a team's admin can set what it may do. Also a round of fixes from an audit of agent mode, two of them security fixes to the git tool.
- Undo what a reply changed. Agent mode applies edits straight away, so a reply that changed files now ends with the list of them:
3 files changed +24 −7, each file with its own counts and whether it is new or deleted. Click a file to see it beside what it was before the reply. undo puts one file back, undo all every file. Undo goes through the editor, so the editor's own Undo brings the agent's change back again. A file changed since the reply ended (by you or a later reply) is only put back if you say so. Edits, new files, deletes, moves and renames are covered, and so, inside a git repository, are files a command the agent ran changed (a formatter, a codemod,sed -i): the working tree is read before and after each command through a copy of git's index (about as long asgit statustakes in that repository), so your staging is untouched and ignored files never appear. Copies are kept in the workspace's storage for the last 50 replies. - Agent settings in the chat. With agent mode on, a gear beside the agent switch opens what agent mode may do: whether changes apply or wait for review, whether commands ask, run or are off (the same as the auto-run switch), whether they run in the background or the terminal, how many steps a reply may take (8, 12, 20 or 30; new setting
twinny.chatToolsMaxSteps, 12 by default), and forgetting the commands set to always run. Each writes your owntwinny.chatTools…settings. A rule your team sets shows and cannot be loosened there. - MCP servers in agent mode. Name Model Context Protocol servers in
twinny.chatToolsMcpServers(a command, its arguments and environment), and their tools join agent mode. A server starts with the first agent reply and stops with the chat; it runs on this machine over standard input and output (no HTTP servers yet). Each call shows in the steps with Run, Always run (that tool, whatever its arguments) and Skip, because nothing a server does can be undone from the reply. A team whose rules take commands away takes MCP servers away too, one that asks before every command asks before every tool call, and Policy → Agent mode → MCP servers turns them off on their own. With no servers set, nothing changes: agent mode's prompt and tools are as before. The agent settings panel says how many servers are set and links to the setting. - The agent sees the errors it causes. After an edit is applied, the result the model gets names the errors the editor now reports in that file that were not there before (up to five), so it can fix its own mistake without spending a step asking. The step's line says
· 1 new error. Warnings are left out. In a file that was not open before the edit, only errors on the lines it changed are named, so the file's old errors are not blamed on it. AGENTS.mdis followed. The project'sAGENTS.mdat the workspace root (or, without one,CLAUDE.mdor.github/copilot-instructions.md) goes into agent mode's instructions. A folder's ownAGENTS.mdcomes along the first time the agent works in that folder, and wins over the root's where they differ. The reply's footer names the files followed; click to open them. Changes to anAGENTS.mdare always shown for review.- Team rules for agent mode. On the gateway's admin page, Policy → Agent mode (or
policy.agentin the configuration, with thepolicylicence feature): turn agent mode off for the team, make every command ask (auto-run and Always run then do nothing) or take commands away, make every change wait for review, and list paths the agent may not list, read, search, see in git or change. The rules only tighten a developer's own settings, are shown on the consent card, and reach developers at their next agent reply. An extension too old to know the rules is refused agent requests while the team sets any (with a message to update twinny or switch agent mode off); its plain chat and completions carry on. - A finished command can be copied or put in your terminal. A command step the agent ran has a copy button and a terminal button: the command lands in your terminal to look at or run again, and nothing runs until you press Enter.
- Fixed: the
gittool could read files outside the workspace. A path outside the repository madegit diffcompare any two files on the machine, and abbreviated options (--contenfor--contents) or--ignore-revs-fileread any file. Paths outside the workspace are refused wherever they appear, an option is refused by any start of a refused name, and the files-by-id route is closed too. - Fixed: the
gittool could show files.gitignorehides when git still tracks them, by object id (fromls-files -s), by staged path (:0:path), by a path with./or..in it, or with--relative.ls-filesoutput leaves hidden files out, andstatus --ignoredis refused. - Fixed: a command that left something running in the background never finished.
npm start &or a server started by a script kept its step spinning for ever, and its stop button did nothing. The step now ends when the command does, and what it left running is ended with it (the model is told). A command that ignoresSIGTERMis killed when its time runs out, and running commands end when the chat closes. - Fixed in edits: code that only looks like
read_file's line numbers (404: "Missing", YAML ports) is no longer stripped from an edit, and an edit that removes whole lines no longer leaves a blank line behind. - Fixed in replies: an answer that mentions
<tool_call>tags is shown as an answer, not treated as a broken call; text held back in case it began a call (a closing code fence) is shown when the calls come natively; on the last step a stray call is left out and the answer after it kept; calls made together share the context, so their results are not trimmed before the model reads them; call arguments underargs,inputorparamsreach the tool; and a reply that ends on an edit waiting for review says so instead of "ran out of tool steps". - Fixed in the chat: starting a new conversation, or opening another, while an agent reply is running stops the reply instead of letting it land in the conversation you moved to.
Shift+Enteron an empty composer no longer applies a waiting delete or move. Every thinking block in an agent reply is hidden, not only the first. A tool step no longer lands inside a code block, or jumps to the end of the reply, when the model wrapped its call in a fence. A reply that failed after its tools ran is no longer labelled stopped, and its tools' notes still go with your next message. - Fixed in safety rules:
.vscode/and.gitignoreare protected in any letter case (as macOS and Windows treat them),*.code-workspacefiles are protected like.vscode/, a link is judged by where it leads as well as by its name (and a new file is not written through a link whose target is missing), and deleting a file marked skip-worktree or assume-unchanged asks first, since git cannot vouch for it.