Migration Guide
Upgrade instructions for each AgentBoot release that requires action. Releases not listed here are backward-compatible and require only a package update.
v0.20 β v1.0 (1.0.0)β
Read this section before upgrading a hub that builds in CI. 1.0.0 is the release
where a long list of silent losses became refusals. Nothing about your hub source
is invalid, but configuration that previously compiled to nothing β while build,
validate --strict and doctor all reported green β now fails the build and names
what it cannot honour. Expect a red build on the first run, and expect the red build
to be telling you about enforcement you thought you already had.
npm install -g agentboot@latest
cd /path/to/your-personas-hub
agentboot build # read the failures; they are findings, not noise
agentboot doctor # new Coverage section, printed before Enforcement
agentboot sync --dry-run # review deletions before they propagate
The one to read first: path scope was inverted, not droppedβ
An instruction authored applyTo: "src/api/**" was delivered to Cursor, Windsurf and
JetBrains as always-on, every file β the compiler stripped the source frontmatter
without parsing it and hardcoded alwaysApply: true. Exit 0, no diagnostic. Your
narrowly-scoped rules have been firing everywhere.
Action: after upgrading, your scoped rules start behaving as authored. If any
downstream behaviour depended on the accidental always-on delivery, it changes here.
Related: a malformed applyTo:/paths: used to read as "no scope" (i.e. always-on)
and now stops the build β fix the YAML, or write applyTo: "**" if the rule
really is universal.
New build-FAILING gates you can reach from an existing configβ
- A configured capability that no configured platform can emit. Eight of them were
found producing zero bytes on a real hub β an org
PreToolUsegate, a fail-closed DLP scanner, a digest-pinned MCP allowlist,disableBypassPermissionsMode, model overrides. Action: add the platform that can honour the capability, drop the key, or waive it with acapability:<id>entry inagentboot-exceptions.json(owner + approver required, and it expires β a waived gap still prints on every build). - A narrowly-scoped instruction aimed at a platform that cannot express scope
(
claude,skill,plugin,agents,codex,gemini). Acknowledge it on the artifact withscope-unsupported: acknowledged; the emitted file then carries aScope:preamble naming the intended paths, so you are opting into a documented degraded delivery rather than into silence. - A differing-value collision in the managed-scope merge. Declare intended
overrides in
managed.scopeMerge.acknowledgedOverrides; the loss is then a warning naming winner, loser and both sources, because an acknowledged loss is still a loss. managed.guardrails.forcePluginswas typed, documented, accepted β and read by no code path on any platform. Setting it now fails the build. Same posture forpersonas[*].mcpServers.- An unreadable
persona.config.jsonor managed-settings fragment is fatal rather than a yellow warning followed by a persona shipping without its tool restrictions. - A gotcha
paths:value that escapes the output root fails the build. It was an arbitrary file write from an artifact source, onagentboot build.
Revocation now works β the first sync after upgrading may DELETEβ
dist/ was never pruned and sync never unlinked anything, so an artifact you
removed from instructions.enabled β or an entire platform you removed from
personas.outputFormats β kept shipping to every spoke indefinitely, with build,
sync, status, drift-check and audit all green and the manifest attesting the
delivered bytes as correct.
Action, and please do this one deliberately:
- Run
agentboot sync --dry-runfirst. Any stale artifact accumulated before this release is removed in one pass. - Deletion is confined to paths listed in the spoke's previous manifest, so sync can only remove files it wrote.
- A revoked artifact the spoke has edited is an error, not a silent skip: it is
recorded in the manifest's new
retired[]array,syncexits non-zero, anddrift-checkreports it. Aretainregex on therepos.jsonentry (or hub-widesync.retain) downgrades it to a warning that still prints every sync. - Because several platforms share a
targetDir, revocation propagation is skipped β loudly β for one run against an untagged manifest.
manifest_digest changes for every spoke (manifests gained platform and
retired[]), so the first sync reports every repo as changed and signed hubs re-sign.
Other behaviour changesβ
syncrefuses to ship a platform the hub does not build.repos.jsonandpersonas.outputFormatscould contradict each other, and the contradiction was resolved silently in favour of the stale tree β i.e. in favour of the retired policy. Other repos still sync; the run exits non-zero at the end.test,baseline,drift-check,conformance,install-user,publishandconnectrefuse to act on adist/whose own build stamp saysfailed. In particularagentboot test --snapshotno longer banks a superseded tree as the baseline every later--regressionis compared against.- Blocking hooks no longer fail open on a payload they cannot read, measure or
parse. Three routes each turned the DLP input scan and the PreToolUse deny gate into
exit 0 with nothing on stdout or stderr. The Stop-hook output scan still exits 0 by
design β a Stop hook that blocks strands the session β but now says
output scan SKIPPED, this response was NOT scanned. mcp.enforceApproved: truewith an emptymcp.approvedlist now enforces. The maximum-shortfall state β nothing approved β was the one state that produced no finding and shipped every configured server.- Persona-declared hooks are scanned for dangerous shell patterns. A persona hook piping a network download into a shell used to build green.
drift-checkreports an unreadable manifest asUNCHECKED/PARTIALLY CHECKEDrather than asclean.auditstaleness compares the artifact-source digest, not file mtimes, so an edit with a rewound mtime and a deleted artifact are both caught.output.failOnDirtyDistis deprecated and ignored (it warns when set). Staging builds make a dirtydist/structurally impossible.agentboot test --behavioral --allow-unevaluatedwaives judgement-only scenarios again. Structurally broken scenarios remain unwaivable, as does "no cases ran".
New commandsβ
agentboot baselineβ archive a dated conformance snapshot. Platforms change their enforcement semantics silently and your corpus text does not move, sodrift-checkstays green while governance stops working. A baseline cannot be backfilled. Action: start running it on a schedule now, not when you need it.agentboot identityβ stamp permanent ids and content hashes on governed artifacts. Also cannot be applied retroactively; run it once before your 1.0 cut so your artifacts date from then rather than from whenever you get to it.
Both are documented in the CLI reference.
v0.19 β v0.20 (0.20.0 through 0.20.2)β
Assurance hardening from a GA-readiness audit β every verifier AgentBoot ships now fails closed on tampered, stripped or unbound input β followed by fixes from a beta evaluation that ran the product end to end from the published documentation only. Hub source does not need rewriting.
npm install -g agentboot@latest
cd /path/to/your-personas-hub
agentboot build
agentboot sync
Behavior changes in 0.20.0β
- Verifiers fail closed.
telemetry-verifycryptographically verifies batch signatures and enforces them under--require-signed(stripping every signature previously passed); signing is all-or-nothing, so a signing failure aborts the spool and leaves the cursor unmoved instead of shipping unsigned.verify-manifestno longer reports a signed posture on content failing its digest or file-hash check, and an attestation that cannot be bound to a manifest no longer passes.mcp-verifyis fail-closed on the--pinsCI path. Action: a CI job that was green on stripped or unbindable evidence turns red β that red is the true state, and it is the point of the release. --config/AGENTBOOT_HUBis now honored bytest,conformance,install-user,optimizeandadd. Action: scripts that passed--configto these and relied on the buggy cwd fallback now get the hub they asked for.- Releases fire only on a strict semver increase, and the version-string guard
catches stale
agentboot@pins of any minor. - The secret scan covers
agentboot.config.jsonand flags literal telemetry-sink header values; sink and pin config files classify as enforcement-risk in sync PR summaries. Action: a hub with an inline sink token gets a new finding. - Added:
agentboot evidence-packincludes MCP governance (approved servers, registry provenance, pin status) and an explicitintegrity.signedfield.
Behavior changes in 0.20.2β
Reporting honesty β most controls worked, but described what they had done inaccurately.
syncPR mode asserts its preconditions before mutating the repo. Previously the first sign PR mode could not be honoured was agit pushorghfailure β after a branch had been cut and a commit made. The error now names the cause and states plainly that files were written directly, so nobody is left believing a review gate applied when it did not.sync --dry-runalso reports that PR mode is active; its output used to be byte-identical to direct-write.importcan now clear the gate that recommends it. The first sync onto a repo with existing instruction files stops and points atimportβ butimportnever modifies the source repo, so the gate re-fired identically and the destructive--adopt-existingbranch was the only escape. Import now records what it imported, and the gate reads that record.drift-checkcounts deletions (a deletion-only drift printed0 modified) and--verboseworks β it was accepted and silently ignored.- Shadowing a
guardrail: hardartifact failsvalidate --strict. The check covered only trait weights set toOFF, so re-declaring the artifact at a lower scope withguardrail: softpassed. Action: hubs using scope overrides may meet a new strict-mode failure. - Provenance headers, build output and secret-scan findings resolve against the hub rather than the installed package directory, which had been leaking the operator's filesystem layout into every file synced to every spoke.
- Added:
agentboot add instruction <name>, anddocs/guardrails.mdβ the authoring syntax forguardrail: hardpreviously appeared on no documentation surface at all.
v0.15 β v0.19 (0.16.0 through 0.19.0)β
The GA-hardening series: an adversarial audit of AgentBoot's own enforcement claims (0.16.0), tamper-evident telemetry (0.17.0), the auditor-facing evidence surface and AGENTS.md promotion (0.18.0), and MCP digest pinning plus optional in-toto attestation (0.19.0). Hub source does not need rewriting. The standard path applies: update the package, rebuild, resync β then read the per-release notes below, because several fixes change what the first post-upgrade build and sync do.
npm install -g agentboot@latest
cd /path/to/your-personas-hub
agentboot build
agentboot sync
Behavior changes in 0.16.0β
- The output-scan Stop hook now actually blocks. It previously read a payload
field the platform never sends (
response) and scanned the empty string on every invocation β a documented-as-blocking no-op. It now reads the real field (last_assistant_message, with a transcript fallback) and its binding is synchronous. Action: rebuild + resync, then expect Stop-hook blocks that never fired before; ifoutputScan.blockingis set, budget for triage. - Sibling-scope content no longer leaks to every spoke. The parent-scope sync walk previously shipped every other team's content to every repo in a group. Action: the first post-upgrade sync PR may remove content from spokes β that content should never have been there; review with that in mind.
- The published telemetry JSON Schema is now generated from the canonical event
spec (
additionalProperties: false) β the old artifact rejected the product's ownsession_summaryevents and permitted fields the hooks never emit. Action: tooling that validates events against the shipped schema must adopt the regenerated artifact. - The secret scan now covers the full compiler input surface (core,
instructions, gotchas, lexicon, all scope layouts, domains;
.yamlincluded). Action: hub content that previously passedvalidatemay now fail; scrub or use placeholders. sync --adopt-existingarchives more root files.AGENTS.md,.cursorrules, andGEMINI.mdare now archived to.agentboot-archive/before overwrite instead of being destroyed. Action: none β strictly safer.verify-manifestgained tamper-protection flags:--require-signedmakes a missing signature a failure (the defense against signature stripping) and--allowed-signers/--signerauthenticate signer identity. Action: spoke CI that runsverify-manifestshould adopt--require-signedonce signing is on.- Node.js floor is 22 (
doctornow agrees withengines). Action: upgrade runtimes below Node 22.
Behavior changes in 0.17.0β
- Telemetry event schema v1 β v2. Every event now carries a
chainfield (sha256 hash chain computed at append time), and the published schema artifact is nowdist/schema/telemetry-event.v2.json. Action: tooling pinned to the v1 schema path or schema must move to v2 and tolerate thechainfield. - New commands
telemetry-ship/telemetry-verifyship digest-chained, optionally SSH-signed batches to an org-configured collector and verify log/batch integrity. Opt-in: nothing ships unless you settelemetry.sinkin the hub config β there is no default endpoint. telemetry.sinkcompiles intotelemetry-sink.jsonin every platform core dir and syncs to spokes. Action: if you enable a sink, the next sync delivers a new visible artifact to every repo; shipped events are no longer developer-deletable β disclose this to your developers (see privacy.md).
Behavior changes in 0.18.0β
- AGENTS.md is now an officially supported, first-class output (previously
community tier; enforcement class is ADVISORY β instructions, not hooks). The
compile fallback output set now includes
agents. Action: hubs building without an explicitpersonas.outputFormatslist may emit β and the next sync may deliver β anAGENTS.mdspokes didn't previously receive; repos with a hand-writtenAGENTS.mdhit the first-sync stop /--adopt-existingflow. - New command
evidence-packexports a signed, digest-protected bundle of the org's governance state for auditors. Opt-in; no migration required. - Docs and website truth-up only otherwise β no other user-facing changes.
Behavior changes in 0.19.0β
- MCP digest pinning.
agentboot mcp-pin --writerecords a sha256 pin over each approved server's live tool definitions (mcp.approved[].toolsDigest, per-tool hashes in anagentboot.mcp-pins.jsonsidecar);agentboot mcp-verifyre-checks them for rug-pulls. Pins compile intomcp-pins.jsonin every platform core dir, so spokes can verify without the hub (mcp-verify --pins .claude/mcp-pins.json). Action: a new synced artifact appears in spokes;validatenow warns on approved servers that are unpinned or lack the newmcp.approved[].registryprovenance field β pin your servers or expect warnings. - Optional in-toto/DSSE attestation. With
sync.signing.emitInTotoset, signed syncs emit.agentboot-manifest.intoto.jsonandverify-manifestverifies it. Opt-in; no action unless enabled (then expect the new artifact in sync PRs). - AGENTS.md import discovery, root and nested.
importnow auto-discovers nestedAGENTS.mdfiles (the spec's monorepo pattern). Action: re-running an import sweep may surface files earlier sweeps missed. - Fixed:
--configwas silently ignored bytelemetry-inspect,telemetry-ship, andevidence-pack(they fell back to cwd discovery). Action: scripts that passed--configto these commands and relied on the buggy cwd fallback now get the config they asked for.
v0.11 β v0.15 (0.12.0 through 0.15.0)β
These four releases shipped together as an enterprise-hardening series. Your hub
source (traits, personas, gotchas, config) does not need to be rewritten, but
several behaviors changed β this is not a drop-in upgrade if you have automation
or tooling built against the old behaviors. Read the list below, then follow the
standard path: update the package, re-run agentboot install in the hub, rebuild,
and resync.
npm install -g agentboot@latest
cd /path/to/your-personas-hub
agentboot install
agentboot build
agentboot sync
Expect the first post-upgrade sync to be larger than usual β the manifest format changed and scope-layout fixes may deliver content that previously compiled to nothing (see below).
Behavior changes in 0.12.0β
- First sync onto existing agent config now hard-stops. A first sync against a
repo that already has hand-written instruction files (
CLAUDE.md,AGENTS.md,.cursorrules,.github/copilot-instructions.md) refuses to run unless you passsync --adopt-existing. Without the flag, sync points you atagentboot import(recommended β it decomposes the bespoke content into hub artifacts). With the flag, pre-existing files that sync overwrites β including root-level artifacts β are archived to.claude/.agentboot-archive/before anything is written. Action: scripted first-time onboarding of repos with existing config must either import first or add--adopt-existing. - Sync now reads the
dist/<platform>/nodes/<group>[/<team>]/scope layout, and node output wins over legacy dist directories on conflict. Team-scope personas that previously compiled to nothing (or never reached spokes) now do β your first rebuild + resync after upgrading can deliver genuinely new content to spokes. Action: review the first post-upgrade sync PRs with that in mind. dist/pluginlayout changed. The plugin manifest moved fromdist/plugin/plugin.jsontodist/plugin/.claude-plugin/plugin.json(required by the plugin spec), the plugin name became kebab-case (<org>-personas), and compliance hooks are now actually registered via a generatedhooks/hooks.json. Action: any tooling readingdist/plugin/plugin.jsonmust read the new path; installed plugins now enforce hooks that were previously dead files.- The MCP server is read-only by default.
agentboot mcp-serverhides and rejects the mutating tools (build,sync,propose_change) unless started with--profile maintainerorAGENTBOOT_MCP_PROFILE=maintainer. Action: MCP clients that relied on mutating tools must opt in to the maintainer profile. - The build-time secret scan got stricter.
validate --strictnow catches bare AWS access-key IDs, JWTs, and DSA private-key headers that previously only the runtime input-scan hook blocked. Action: hub content (including test fixtures) that previously passed validation may now fail; scrub or use placeholder values. - Generated
npx agentbootinvocations are version-pinned. MCP server entries emitted into.mcp.json,mcp.json, and Codexconfig.tomlpin the compiling AgentBoot version instead of resolvinglatestat session start. Action: spokes no longer pick up new versions until you rebuild and resync β deliberate, but a change if you relied on floatinglatest.
Behavior changes in 0.13.0β
- Import never overwrites an existing artifact. Previously, two repos importing
the same trait/rule/persona slug in one sweep both planned
create, and the second write silently clobbered the first. Now: duplicate content becomes a provenance-only update on the existing artifact; distinct content under the same slug is appended and counted as an update; in a multi-repoimport --parentsweep, later copies of shared content are labeledmergeand converge on one promoted org artifact. Action: import plans and results look different β if you post-process import output, expectmergeactions,Updated:counts, andcross_repo_promotionsin the staging file. - Imported artifacts carry multi-source provenance frontmatter
(
source:+additional_sources:) on whole-file imports and hub-duplicate skips, not just section merges. Action: tooling parsing imported-artifact frontmatter should tolerate the additional keys.
Behavior changes in 0.14.0β
.agentboot-manifest.jsongained provenance and integrity fields: the hub commit (with a dirty-tree flag), AgentBoot version, sha256 hashes of the config and policy-exception files, a sha256 digest over the manifest, and an optional SSH signature. Action: custom tooling that parses spoke manifests must tolerate the new fields; useagentboot verify-manifestrather than hand-rolled checks.- The manifest now inventories all managed files, including files skipped as already-identical on re-sync. Previously a re-sync over an up-to-date repo produced a near-empty manifest and silently removed files from drift coverage. Action: none required β but expect drift-check coverage to widen after the first post-upgrade sync, which can surface pre-existing drift it was blind to.
- Sync PR bodies changed format. The "Automated AgentBoot sync" boilerplate was replaced by a provenance block and a risk-classified change summary. Action: automation that keys on the old PR body text must be updated.
- A configured-but-failing signer is a sync error. If
sync.signingis set and signing fails, sync fails β it never silently falls back to unsigned. Action: ensure the signing key is available wherever sync runs (including CI).
Behavior changes in 0.15.0β
agentboot conformanceand per-platform enforcement manifests. Builds now producedist/<platform>/enforcement-manifest.jsonrecording the declared enforcement level and per-probe expected-vs-observed results; advisory platforms get a manifest stating plainly that no enforcement mechanism exists. Action: a new artifact appears indist/; if you addagentboot conformanceto CI (recommended), it exits non-zero when observed hook behavior diverges from the declared level β that is the point, but budget for triage when you first enable it.- Enforcement classification has a single source of truth shared by
doctor, the conformance harness, and the capability-matrix docs. Action:doctoroutput wording for platform enforcement may differ from earlier releases.
v0.10 β v0.11β
v0.11 is a public Beta. It's usable end to end, but breaking changes may still occur before v1.0 GA. See the Roadmap for what's ahead.
What changed: v0.11 adds a third official platform β OpenAI Codex β and makes
governance a first-class output. Compliance hooks are now emitted for Claude Code,
Codex, and GitHub Copilot from one canonical set of portable scripts, blocking on
exit code 2 (verified on Claude Code and Codex; Copilot's exit-2 behaviour is
documented but not yet verified, and its command-hooks fail open on timeout β see the
platform capability matrix), alongside drift
detection, HARD/SOFT guardrails, and
managed-settings output. It also introduces user-level installs (install-user),
packaged harness templates (add template, starting with sdlc-orchestrator), and
weight-tiered trait sections. None of your existing hub source needs to be rewritten β
but you must re-run install, rebuild, and re-sync to write the new hook and managed-
settings files into your hub and every spoke.
Migration stepsβ
1. Update the package
npm install -g agentboot@latest
Verify:
agentboot --version # should show 0.11.x or higher
2. Re-run install in your hub
cd /path/to/your-personas-hub
agentboot install
Safe to run on an existing hub. It writes the new canonical hook scripts and the
managed-settings scaffolding, and leaves your traits, personas, gotchas, repos.json,
and agentboot.config.json untouched.
3. (Optional) Enable Codex output
If your team uses the OpenAI Codex CLI, add it to your build targets in
agentboot.config.json:
{
"personas": {
"outputFormats": ["claude", "codex", "copilot"]
}
}
See docs/configuration.md for the full personas.outputFormats list.
Existing platforms keep building unchanged if you skip this.
4. Build and sync
Rebuild and push to every registered repo. This is the step that actually distributes the new cross-platform hooks and managed settings to your spokes:
cd /path/to/your-personas-hub
agentboot build
agentboot sync
Sync opens a pull request per repo (drift-checked). Review and merge as usual β the new
managed-settings and hook files land under each spoke's .claude/, .codex/, and
.github/ as applicable.
5. Restart Claude Code
Blocking hooks and managed settings are read at session start. Restart Claude Code in any repo (hub or spoke) to pick them up:
claude
6. Verify
agentboot doctor
doctor now reports real content-hash drift and flags any managed file a repo's
.gitignore would silently exclude from sync β a synced repo with locally modified
managed files is correctly surfaced. /ab status likewise reports the full artifact
inventory (personas, traits, gotchas, lexicons β core vs org-specific).
New in v0.11 you can adopt when readyβ
These are opt-in β upgrading does not require them:
- User-level install β
agentboot install-userwrites compiled skills/rules to your user scope (~/.claude) for a personal setup without a formal org hub. If another tool manages~/.claude(a~/.claude/.managedsentinel oruserLevel.mode: "manifest"), AgentBoot stages its output plus a handoff manifest instead of writing directly. - Harness templates β
agentboot add template <name>installs a pre-packaged bundle into your hub. The first issdlc-orchestrator, a phase-gated delivery persona (spec/PRD β architecture β parallel-worktree implementation β QA gates β review) whose rigor is tunable via trait weights. - Weight-tiered trait sections β a trait may split weight-sensitive guidance into
### LOW|MEDIUM|HIGH|MAXsections; the compiler injects only the tier nearest the persona's weight, cutting token bloat. Untiered traits compile exactly as before, so this is fully backward-compatible.
Surface changes to be aware ofβ
- Pruned from top-level help (still functional). The marketplace subsystem
(
publish,marketplace,registry) and thetest --judge/--verbose/--min-scoreevaluation flags are hidden from--helpin the v1.0 surface. They still run if you invoke them directly β no scripts break β but they are no longer advertised. - Removed MCP tool. The non-functional
agentboot_optimize_metricsMCP tool was dropped. The real capability is the telemetry-drivenagentboot optimizeCLI; point any automation there instead.
v0.9 β v0.10β
What changed: v0.10 ships the /ab skill β a five-agent orchestrator that replaces
direct CLI usage for interactive work. It also introduces the AgentBoot MCP server, which
the skill requires. Neither existed in v0.9, so a fresh agentboot install is needed
to write the new files into your hub.
/ab is available in every repo, not just the hub. After installing and syncing,
developers can use /ab from any spoke repo without switching to the hub directory.
The MCP server resolves the hub automatically from a global registry written during
agentboot install.
Migration stepsβ
1. Update the package
npm install -g agentboot@latest
Verify:
agentboot --version # should show 0.10.x or higher
2. Re-run install in your hub
cd /path/to/your-personas-hub
agentboot install
This is safe to run on an existing hub. It will:
- Write five skill files into
.claude/agents/:ab.md,ab-author.md,ab-diagnose.md,ab-manage.md,ab-query.md - Create or update
.mcp.jsonwith the AgentBoot MCP server entry. Existing MCP server entries are preserved β only theagentbootentry is added or updated. - Register the hub in
~/.agentboot/config.jsonso the MCP server can resolve it from any repo on this machine. - Leave all other hub content (traits, personas, gotchas,
repos.json,agentboot.config.json) untouched.
3. Build and sync
Rebuild your personas and sync to all registered repos. This updates the /ab agents
and writes the AgentBoot MCP server entry to every spoke's .mcp.json:
cd /path/to/your-personas-hub
agentboot build
agentboot sync
4. Restart Claude Code
Claude Code reads .mcp.json at startup. Restart it in any repo to pick up the MCP
server β the hub, a spoke, or any other directory:
claude
5. Verify
Type /ab in Claude Code. The orchestrator should respond and offer to route your
request to the right specialist. If it doesn't, see Troubleshooting
below.
You can verify from any spoke repo, not just the hub:
cd /path/to/any-spoke-repo
claude
# then type /ab
What you get after upgradingβ
| Before (v0.9) | After (v0.10) |
|---|---|
agentboot build in terminal | /ab build in Claude Code |
agentboot sync in terminal | /ab sync in Claude Code |
agentboot add trait <name> | /ab add trait <name> |
agentboot import --path <dir> | /ab import <dir> |
agentboot doctor | /ab diagnose |
agentboot cost-estimate | /ab cost-estimate |
The CLI still works for all commands β it is the CI and scripting interface. /ab
is the interactive interface for day-to-day use. You do not need to migrate existing
scripts.
If you have multiple hubsβ
Run agentboot install separately in each hub directory. Each hub is registered
in ~/.agentboot/config.json. The first one registered becomes the default β the
hub the MCP server uses when /ab is invoked from a spoke repo.
cd ~/work/acme-personas && agentboot install
cd ~/work/sideproject-personas && agentboot install
To change the default hub, edit ~/.agentboot/config.json and update the
"defaultHub" field to the path you want, or run agentboot hubs to view and
manage registered hubs.
If you moved your hub after the v0.9 installβ
The hub's .mcp.json and the global registry (~/.agentboot/config.json) both
record the hub's absolute path at install time. If you moved the hub directory,
both will point to the old location and the MCP server will fail to find your config.
Fix: re-run agentboot install from the hub's new location. This updates both
.mcp.json and the registry entry.
cd /new/location/personas
agentboot install
Troubleshootingβ
/ab is not recognized in Claude Code
The skill files were not written or Claude Code has not restarted. Check:
ls /path/to/your-hub/.claude/agents/
# Should show: ab.md ab-author.md ab-diagnose.md ab-manage.md ab-query.md
If the files are missing, re-run agentboot install from the hub directory.
If the files are present, restart Claude Code.
/ab responds but MCP tools fail
The MCP server is not running or is resolving the wrong hub. Check in order:
- Confirm the global registry points to your hub:
cat ~/.agentboot/config.json
# "defaultHub" should be your hub's absolute path
- Confirm
.mcp.jsonexists in the repo where you're running Claude Code:
cat /path/to/repo/.mcp.json
# Should contain an "agentboot" entry
- If either is missing or wrong, re-run
agentboot installfrom your hub directory.
To confirm the MCP server starts and resolves the right hub, run it manually:
agentboot mcp-server
You should see AgentBoot MCP server listening with the hub path shown. Ctrl+C to stop.
MCP server starts but reports wrong hub
The global registry (~/.agentboot/config.json) has a stale defaultHub path.
Open it and update "defaultHub" to your hub's current absolute path, or re-run
agentboot install from the hub to regenerate it automatically.
v0.8 β v0.9β
No migration required. Update the package:
npm install -g agentboot@latest
v0.9 added multi-platform output targets (Gemini, Windsurf, JetBrains) and the
agentboot import command. These activate automatically if you run agentboot build
after upgrading. No config changes needed unless you want to enable the new output
targets β see docs/configuration.md for the personas.outputFormats
field.
General upgrade policyβ
- Patch releases (0.x.y): Always backward-compatible. Update and rebuild.
- Minor releases (0.x): Usually backward-compatible. Check this page for any action required.
- Pre-v1.0: Breaking changes may occur at any minor release. Release notes and this page will document all required migration steps.
- v1.0+: Semantic versioning applies. Breaking changes only in major releases.
When in doubt after any upgrade: agentboot install in your hub, agentboot validate,
agentboot build. These three commands will surface any incompatibilities.