Highlights
- Breaking: sync stops on an MCP
rootsitem that is not a{uri, name}mapping, and Pi MCPtimeoutis now milliseconds. See MCP servers. - The web interface opens on Conversations, with recent Claude Code, Codex and Cursor chats that reopen where they live. See the web interface.
- Setup health lists gaps with fix prompts, rechecks everything, and copies one prompt for the findings you tick.
sync --dry-run,--planand--checkmatch what a real sync does, and--diffworks for project and global sync. See sync.
Upgrading from v0.91.0
- MCP specs with
roots: write each item as a mapping, so- file:///repobecomes- uri: file:///repo.lintreports the old form as LINT060. See MCP servers. - Pi users with an MCP
timeout: Pi reads milliseconds and sync now converts. Multiply a value in seconds by 1000, so1800becomes1800000. See Pi. - Crush servers imported before this release: their
timeoutholds seconds. Multiply it by 1000; sync now writes seconds tocrush.json. See Crush. - Codex MCP servers with
experimental_environment: runagnostic-ai migrate --only mcpsto move it toenvironment_id, which Codex reads. See migrate.
Then follow the upgrade page.
What changed
Pick up a chat where it lives
Run agnostic-ai ui. Conversations lists recent Claude Code, Codex and Cursor chats, open ones first, with how many wait for you. Open in Terminal reopens a chat in its tool, and a Codex thread that a running codex holds switches to that terminal. It works on Windows too. See the web interface.
Fix setup gaps with one prompt
Setup health lists errors under Fix first and the rest under Worth a look. You could add lists features your tools support that the project does not use yet. Tick findings and suggestions, then Copy prompt copies one prompt for your coding agent.
Read the web interface at a glance
Each page opens with a one-line verdict. Context shows how many words agents read when a session starts, against a budget. Lifecycle shows your hooks as a timeline, and Authority shows every allow, ask and block rule in one table. Phones get a top bar and full-screen search.
See what sync will change
sync --dry-run --diff and sync --plan --diff print a diff for each changed file and name files they would remove, also with --global. sync --global --plan --check fails on drift, like project sync. See sync.
See the release notes for the remaining fixes.
What changed in the targets
- Qwen Code 0.26.8 applies folder trust to headless runs, so a
qwen -prun in CI can skip project hooks in an untrusted folder (release). Sync still writes the hooks. Trusting the folder is a native step, noted on the Qwen page. Qwen Code 0.27.0 adds aFileChangedhook (release), and this release writes it to.qwen/settings.json. - Claude Code 2.1.319 adds
permissions.denyInsteadOfPrompting, which denies a call that would stop to ask and lets the turn continue (release). There is no portable field yet.x-claude.permissions.denyInsteadOfPrompting: truereaches.claude/settings.json. - Kiro CLI 3.0.0 makes V3 the default, and 3.1.0 adds
PreCompactandPostCompacthooks (changelog, hook types).validatenow accepts both triggers. - Crush 0.100.0 adds
blocked_commands,allowed_commandsandsafe_commandsto decide which shell commands prompt (release, schema). This is an open gap: set them incrush.jsonyourself. - Junie ignores an MCP
timeoutoutside 1000 to 3600000 milliseconds and uses 60 seconds (MCP docs).lintand sync now warn about a value above one hour. - Kimi Code 2.5.0 runs sessions in SSH, Docker or custom-command environments (changelog), and a stdio MCP server picks one with
environment_id(MCP docs). Sync and import keepx-kimi.environment_id.
Checked on November 8, 2026 against the linked vendor docs and releases. Native behavior was not run. A local sync checked the Claude and Crush support.