Upgrading from v0.80.0 #
Install it the way you installed the previous one, then fix the two new checks before you sync.
- MCP plain values.
lintandsyncstop on an MCPenvorheadersvalue that is neither a${VAR}reference nor marked!literal. Runagnostic-ai migrate --only secrets, then fix the values it leaves to you (secrets and plain settings ). - Claude agent names. Sync stops on an agent whose name starts with
-or contains:, because Claude Code skips that agent. Rename it, or set a validx-claude.name.
Then run this from the project root:
agnostic-ai upgrade --requires
It pins requires and the schema URL to 0.81.0 and syncs. If you keep a range or minimum in requires, keep it and run agnostic-ai sync instead.
If you turn on memory, also upgrade the agnostic-ai on your PATH, not only a copy pinned in the project. The session-start hook runs the one on PATH, and an older one loads no memory.
What agnostic-ai changed #
One memory for every tool
Add the memory built-in and sync once:
requires: ">=0.81.0"
builtins: [handoff, memory]
Each tool now loads two short lists of facts when a session starts: project memory in .agnostic-ai/memory/, committed for the team, and personal memory in .agnostic-ai/local/memory/, kept out of Git. A rule tells each tool to save your preferences and corrections to personal memory, and to propose team facts before it saves them. Claude Code's own memory saves into the same folder. If Codex learns that CI runs only on Ubuntu, Claude Code and Cursor know it next session.
Claude Code imports the lists, OpenCode and Kilo Code list them in their config, Codex, Copilot, Cursor, Gemini CLI, Qoder, and Factory load them with a hook, and every other tool reads them through the rule. See Shared memory.
One personal memory across worktrees
By default each checkout keeps its own personal memory, and removing a worktree deletes what it saved. Set this in agnostic-ai.local.yaml to share one folder across every worktree of the repository:
memory:
personal: repo
Sync gives Codex, Gemini CLI, Qoder, and the Cursor CLI write access to that folder, and works when ~/.agnostic-ai is a link to another folder. Tools that only get the rule find it with agnostic-ai memory path:
$ agnostic-ai memory path
project ~/code/app/.agnostic-ai/memory
personal ~/.agnostic-ai/local/memory/app-fbcd84e8
See One store per repository for which tools need the managed .gitignore block.
Check and repair memory
agnostic-ai memory lint, index, and list check, rebuild, and list memory. lint and doctor flag a list over 100 lines, a broken link, and text that looks like a secret.
Fixes
- Sync keeps hooks you wrote by hand on Claude Code, Codex, Cursor, Gemini CLI, Qoder, and Factory when it adds its own.
.cursor/cli.jsonnow always has bothallowanddeny. The Cursor CLI refused a file with only one, so its rules never loaded.- A Copilot hook with a Windows command runs on Windows.
lintcounts theAGENTS.mdthatCLAUDE.mdimports in Claude Code's word total.
Full list: v0.81.0 release notes.
What changed in the targets #
Claude Code skips agents with some names. Its subagents page (checked 2026-10-07) says a name that starts with -, contains :, or is longer than 256 characters makes Claude Code skip the file and log an error. Claude Code 2.1.292 added the length limit. This release stops sync on such a name instead of writing an agent that never loads.
Kilo Code ignores project-listed files outside the project. In Kilo v7.8.8, instructions entries from a project kilo.jsonc cannot read files outside the project root, and a blocked file is dropped without a warning (source). With repo mode, sync no longer lists the personal folder there; Kilo finds it through the rule, or you add it to ~/.config/kilo/kilo.jsonc. Kilo v7.8.7 also added a memory_model setting, which a settings spec can already set through x-kilo.
Antigravity retires current workflows on October 19, 2026. Its workflows page (checked 2026-10-07) says current workflows stop working on that date. agnostic-ai emits no Antigravity workflows, so synced output does not change; move any workflow you wrote by hand before then.