v0.9.0
Seven new integrations (18 tools in total), support for the Agent Plugins standard, profiles, a context budget command, schema version 4, and a pass over defects that had been in the codebase for several releases.
Breaking: Claude Code now writes MCP servers to .mcp.json in the repository root, the project scope Anthropic documents for teams, instead of registering them in the machine-local ~/.claude.json. Projects migrating from schema 3 keep the previous behaviour; new projects can opt back in with integrations.options.claudeScope = "local".
npm install -g @agents-dev/cli
Added
- Seven integrations: Grok Build (
.grok/config.toml), Amp (.amp/settings.json), Factory Droid (.factory/mcp.json), Kilo (.kilo/kilo.jsonc), Devin CLI (.devin/mcp_config.json), Zed (.zed/settings.json) and Goose (~/.config/goose/config.yaml). The CLI now covers 18 tools. - Integration name aliases:
devin_desktop,factory,grok_buildandkilocoderesolve to their canonical ids. - Agent Plugins 1.0.0 support:
agents plugin export,agents plugin validateandagents plugin import. Export buildsplugin.json,mcp.jsonandskills/from.agents, reading only the committed config so secrets fromlocal.jsoncannot ship in a package. - Profiles:
agents profile set|use|list|removeandagents sync --profile <name>apply a named subset of MCP servers. agents mcp budgetconnects to each server over MCP, lists its tools and reports how much context they occupy, largest first.- Schema version 4 for
.agents/agents.jsonwithtimeout,connectTimeout,tools,disabledTools,oauth,headersHelper,bearerTokenEnvVarandenvFileon MCP servers, plusprofilesandactiveProfile. Version 3 files migrate automatically and a.bakcopy of the previous file is kept. ${VAR:-default}expansion in server definitions.- The sync reports fields a target integration does not support, instead of dropping them silently.
- Copilot CLI can be pointed at
.github/mcp.jsonthroughintegrations.options.copilotCliPath; Copilot CLI has auto-loaded that file since 1.0.61. - CI workflow running lint, build and tests on push and pull request across Node 20, 22 and 24.
Changed
- Breaking: Claude Code now writes MCP servers to
.mcp.jsonin the repository root, the project scope Anthropic documents for teams, instead of registering them in the machine-local~/.claude.jsonthrough theclaudeCLI. Whether that file is committed followssyncMode:source-onlygitignores it and each clone regenerates it,commit-generatedkeeps it in review. Projects migrating from schema 3 keep the previous behaviour; new projects can opt back in withintegrations.options.claudeScope = "local". .mcp.jsonis written once for both Claude Code and Copilot CLI, since both read it. Two consequences are now reported instead of being silent: per-tool targets cannot isolate servers inside that file, and Claude Code on local scope alongside Copilot CLI registers every server twice.- Codex trust is set by editing the project section of
~/.codex/config.tomlin place. The previous implementation reparsed and reserialized the whole file, discarding comments and ordering. - Codex output no longer contains
autoApprove, which is not a documented Codex key, and now emitsstartup_timeout_sec,tool_timeout_secandbearer_token_env_var. - Windsurf is labelled Devin Desktop after the June 2026 rename. Its id and config path are unchanged.
- Skill descriptions may be up to 1024 characters, as the Agent Skills specification allows, instead of 300. Names with consecutive hyphens are rejected, and
license,compatibility,metadataandallowed-toolsare recognised. agents synconly reports warnings from integrations that are enabled.agents statusshows which integrations read.agents/skillsdirectly instead of through a bridge.- Dependencies updated, including @clack/prompts 1.8, tsx and the typescript-eslint packages.
commanderstays on 14: version 15 requires Node 22.12, and this package supports Node 20.12.enginesmoves to the 20.12 floor@clack/promptsalready requires. - Vitest updated to 4.1.11, closing GHSA-82fw-gwwq-j7x9 (path traversal via
@vitest/mocker) reported by Dependabot.
Fixed
- Disabling an integration now removes its servers.
agents disconnect --llm codexleft the managed block in.codex/config.toml, so the tool kept starting the servers; the same held for every config written through a managed block or key. Files that held nothing but managed entries are deleted, files with user settings keep them. agents resetremoves managed entries from.mcp.json,.github/mcp.json,.factory/mcp.jsonand.devin/mcp_config.jsoninstead of deleting the files, which could contain servers added by hand.- Sync bookkeeping (
lastSync,lastSyncSourceHash) moved from the committed.agents/agents.jsonto.agents/generated/sync.state.json. Every teammate's sync used to produce a diff in a file under version control (issue #6). Existing values are moved on the first sync. - Configs shared with a tool's own settings (Amp, Zed, Kilo, Droid, Devin) keep entries added by hand: the sync owns only the servers it wrote, tracked per file.
- Zed
settings.jsonis parsed as JSONC, so a settings file with comments no longer skips the integration. - Project MCP files keep their other top-level keys, such as Copilot's
inputs. agents resetcleans Kilo files that contain comments and removes Goose extensions it created.agents sync --profilewith an unknown name fails instead of silently syncing every server.agents mcp budgetrejects a non-numeric or non-positive--timeout.agents mcp add --urland--commandno longer prompt for a transport that the flag already implies.- Servers whose schema 3 target list named all eleven integrations of that release now reach the integrations added since.
agents doctor --fixno longer runsgit rm --cachedon.zed/settings.json,.amp/settings.json,.kilo/kilo.jsoncor.github/mcp.json: those files belong to the tool or the team, and this CLI never adds them to.gitignore.agents resetremoves its servers from.mcp.jsonin projects synced by 0.8.x, which have no state file, and deletes a project MCP file that holds nothing.agents statusreads Zed and Kilo settings as JSONC, and reports Grok, Kilo and Goose, which were listed in the probe order but never filled in.- A profile whose
serversis not a list is kept in the config instead of being dropped by the next save. agents plugin importwrites${PROJECT_ROOT}rather than an absolute path, so an imported server works for everyone who clones the repository.agents profile removere-syncs when the profile it removed was the active one.envFilereaches Cursor's config; it was accepted by the schema and then dropped by every renderer.agents statuscounts Claude Code servers under both project-scope and local-scope names, and reports servers waiting for approval.agents statusandagents doctorfollowcopilotCliPathinstead of always looking at.mcp.json.- A project upgrading from 0.8.x loses servers it disabled after the upgrade, instead of keeping them in
.mcp.jsonforever. agents resetreads and writes Zed and Kilo files as JSONC, so cleanup works and comments survive.- Settings files that belong to a tool (
.zed/settings.json,.amp/settings.json,.kilo/kilo.jsonc,.github/mcp.json) are no longer added to.gitignore. - The MCP probe sends
notifications/initializedbeforetools/listover HTTP, as the specification requires. agents doctorreports when~/.codex/config.tomlcannot be parsed, with the parse error, instead of failing silently. Codex ignores every project while that file is broken.- Setting Codex trust no longer throws on a config with a syntax error elsewhere; the file is left untouched and the reason is reported.
- The
ssetransport is marked deprecated inagents mcp addand flagged byagents doctor, following the MCP 2026-07-28 specification. agents resetremoves managed entries from Grok, Amp, Zed and Kilo configs while preserving user settings in those files.- Security advisories in development dependencies (js-yaml, @vitest/mocker) resolved.