Agent Layer publishes full release notes and artifacts on GitHub Releases. The complete history lives in CHANGELOG.md and is embedded below.
Where to read release notes:
If you pin versions in a repo, read the release notes before upgrading (see /docs/concepts#version-pinning and /docs/upgrades).
If you are looking for a specific change, search the changelog by version tag (for example v0.6.0).
Changelog
All notable changes to this project will be documented in this file.
v0.20.0 - 2026-09-09
Added
- Live harness model discovery for Claude, Codex, Grok, Antigravity, and GitHub Copilot CLI.
- Wizard prefetches model options across all supported harnesses at startup and falls back gracefully to defaults or custom input if discovery fails.
- GitHub Copilot CLI headless SDK model discovery and doctor model health checks.
Changed
- Standardized Antigravity model parsing to native model IDs.
- Configuration validation allows dynamically discovered models across all supported agent harnesses while retaining custom model entry.
v0.19.0 - 2026-09-07
Added
- CLI commands
al dispatch inspectandal dispatch outputfor observing running or terminal dispatches and reading final answers or captured events. - MCP tools
dispatch_inspectanddispatch_output. - Dispatches support selector targeting by conversation
handleor exactinvocation_id, with bounded provider process-group termination confirmation.
Changed
- Provider cancellation requests now verify process-group termination before considering work stopped.
v0.18.6 - 2026-09-05
Added
- HTTP MCP servers can declare client-managed OAuth authentication with
auth = "oauth";al doctorreports these servers without attempting unauthenticated tool discovery.
Changed
- Agent Dispatch now preserves provider conversation identity across failed handoffs and continuations, records provider activity timestamps, and requires bounded proof of provider process-group termination before releasing ownership.
- Dispatched child processes suppress inherited update warnings so machine-oriented dispatch output stays focused on the requested work.
Fixed
- MCP validation now rejects unsupported authentication values and safely removes HTTP-only authentication fields from stdio server configuration.
v0.18.5 - 2026-09-02
Changed
- Completed benchmark studies can regenerate reports from their immutable manifests without revalidating current project treatments or starting provider and verifier processes, and recovery-only runs print the regenerated report path.
- Upgrade commands reject targets newer than the running CLI and direct users to run the target release binary.
Fixed
- Release artifact builds now require the target migration manifest and smoke-test upgrade planning and application with the built binary, preventing releases with incomplete embedded upgrade metadata.
v0.18.4 - 2026-09-01
Added
- DeepSWE planner export schema v3 pins per-task published sample size and variance so one-repetition studies can report labeled
published_proxyinference when observed Welch variance is unavailable.
Changed
- Study reports prefer observed Welch inference when every required task has at least two completed repetitions in both arms. Schema-v3 selections otherwise use shared published-proxy variance; schema-v2 selections without those pins remain unavailable at one repetition.
- Reports record inference source and published-variance provenance and surface selector versus executed model or reasoning mismatches.
v0.18.3 - 2026-08-30
Added
al dispatch start --roleand MCPdispatch_startroleretain a caller-defined workflow role as dispatch evidence.al benchmark run --recover-onlyfinalizes retained evidence-backed verifier test timeouts without starting a provider or verifier.
Changed
- Official
al benchmark initstudies pin embedded benchmark-safe core rules and workflow skills, keep the project's instructions and skills as unreferenced audit snapshots, and requireplan-reviewer,implementer, andcode-reviewerdispatch roles. - Benchmark progress reports configured timeout budgets, attempt limits, concurrent active cells, and each experiment's effective workflow.
- Paid Grok cells pause before inference when the repo-local OAuth credential has 30 minutes or less remaining.
Fixed
- Evidence-backed verifier test timeouts become explicit zero-score
test_timeoutoutcomes instead of remaining eligible for verifier replay. - A cell failure stops assigning new paid work without cancelling sibling cells that are already running.
v0.18.2 - 2026-08-29
Added
- Paid benchmark cells now persist provider-completion checkpoints and support verifier-only replay from the exact retained provider patch without another provider call.
Changed
- Benchmark progress now reports the active environment, provider, or verifier phase with elapsed time and its effective timeout.
- Benchmark cancellation gives Pier a bounded graceful-cleanup window before process-group escalation.
Fixed
- Provider streams and patches survive verifier failures, cancellation, cleanup errors, and artifact-promotion failures; failed promotion retains and reports its staging path.
- Linux cleanup repairs verifier-owned logs for running and stopped containers before removal, including root ownership repair through a temporary container when needed.
- Failed verifier replays retain their checkpoint and staging evidence instead of becoming resumable paid failures, while sanitization preserves a byte-exact private replay patch.
v0.18.1 - 2026-08-28
Changed
- Benchmark runtime preflights now persist content-addressed receipts and reuse them on later identical invocations;
al benchmark runandal benchmark readinesswarn when DeepSWElinux/amd64task containers require host emulation.
Fixed
- Retained Grok and Antigravity streams are now validated before paid provider calls, and failed stream-preflight artifacts are cleaned up.
v0.18.0 - 2026-08-28
Added
- Added
al updateto update the global CLI through its current installation method: Homebrew formula upgrades use Homebrew, while script installations preserve their existing prefix through the official installer.
Changed
- Upgrade guidance now uses
al updatefor the global CLI and keepsal upgradeas the separate repository migration workflow.
Fixed
- MCP discovery now avoids duplicate built-in Agent Dispatch entries and does not pass version-dispatch state into built-in MCP child processes.
- Global CLI update detection now fails explicitly for development, dispatched, ambiguous, or nonstandard installations instead of risking an unsafe overwrite.
v0.17.9 - 2026-08-28
Changed
- Benchmark study preparation now preflights runtime per task and experiment and retains each task image across its serial cells before reclaiming it, with cleanup preserved after failed or cancelled runs.
- Benchmark overlay certification now derives identity from the pinned image and exact overlay source while still rebuilding and rechecking overlay images; Grok benchmark execution uses Pier's disposable-container
devboxsandbox without a host Bubblewrap dependency.
Fixed
- Benchmark run heartbeat output now resets on real progress and reports after 60 seconds of inactivity, avoiding misleading duplicate heartbeats.
v0.17.8 - 2026-08-27
Added
al benchmark init <selection.json>now scaffolds a self-contained bare-versus-Agent-Layer study with a benchmark-safe provider configuration and snapshots of the current instructions and skills. Addeddocs/BENCHMARK.mdwith the recommended workflow and advanced controls.
Changed
- Benchmark run and readiness commands now choose host-aware concurrency automatically, preflight Docker capacity before image pulls, reclaim task images by default, and report stage/task progress with long-running heartbeats. Readiness can target the tasks selected by a study.
- CI coverage is now behavioral rather than quota-based, and shell syntax validation is part of the complete CI gate; coverage remains available as diagnostic reporting.
Fixed
- Antigravity structured terminal responses now retain the complete final answer even when it exceeds the structured metadata key limit.
v0.17.7 - 2026-08-27
Changed
- Agent Dispatch now uses structured provider output internally for every supported agent, including Antigravity display-name models, while returning only the extracted plain-text answer to callers.
Fixed
- Antigravity exact-slug dispatches now allocate their structured event capture before provider execution instead of failing before launch.
v0.17.6 - 2026-08-27
Changed
- Release catalog certification now runs before tagging in eight isolated, bounded shards. Release publication reuses only a successful certification for the exact tag commit instead of repeating the full Docker audit.
- Benchmark readiness reports task-level progress and supports deterministic task filtering, sharding, and per-task timeouts.
Fixed
- Empty MCP preflight contracts now encode
serversas an array, preserving the benchmark study contract when no MCP servers are enabled. - The
quill-shared-toolbar-focusreadiness image now installs pinnedxauth, allowing the complete pinned DeepSWE catalog to certify successfully.
v0.17.5 - 2026-08-27
Fixed
- Empty MCP preflight contracts now encode
serversas an array, preserving the benchmark study contract when no MCP servers are enabled.
v0.17.4 - 2026-08-26
Changed
- Release preflight now certifies the pinned DeepSWE benchmark catalog before building release artifacts, with bounded Docker image cleanup during the catalog audit.
- Hosted benchmark readiness now bootstraps a minimal Agent Layer workspace in the release checkout before certification.
- DeepSWE benchmark selections now translate published provider model identities to the exact canonical identities accepted by the benchmark CLI and report supported models when selectors are invalid.
- The
.agent-layer/.envfile is optional when no Agent Layer secrets are needed; unreadable or malformed files still fail explicitly. - The
implementskill now limits plan and code-review corrections to the requested input scope.
Fixed
- Docker cleanup uses the correct force flag for containers, volumes, and task images.
v0.17.3 - 2026-08-26
Added
al benchmark runsupports pinned Antigravity 1.1.21 and Grok 1.0.5 coordinators, provider-native Agent Layer treatments, structured coordinator/dispatch evidence, and usage-based API-equivalent cost accounting without running a full benchmark during development.- Antigravity and Grok benchmark adapters use the same repo-local subscription OAuth boundaries as their Agent Layer clients. Antigravity prefers its repo-local OAuth fallback and otherwise exports only the native keyring OAuth profile into the contained CLI fallback file; Grok stages only
.grok-config/auth.json.
Changed
- Agent Dispatch's tested Antigravity baseline is now 1.1.21 because benchmark child usage requires that release's structured headless output. Older Antigravity releases fail the existing provider-version preflight instead of running under an unevidenced stream contract.
v0.17.2 - 2026-08-25
Added
- Added
review/oversizedfor otherwise-cleared entries over 100 files or 250 MiB (including oversized immediate children and top-level files), andreview/symlinksfor top-level or move-breaking links. - Interactive upgrades can record intentional unknown files and directories from
.agent-layer/anddocs/agent-layer/in a gitignored.agent-layer/upgrade-keep-list. Kept paths are omitted from future upgrade plans and deletion flows.
Changed
al wizardreplaces the workflow-bundle yes/no with an instruction choice (None, Rules, or Rules and memory) and a single skills catalog. Agent Layer development skills (/implement,/ship-pr, and the rest of that set) are one catalog row; selecting it installs those skills, and deselecting it removes them. Instructions and skills are independent.- Consolidated the hidden
al organize-scratchsafety model around one complete metadata/hazard walk and outcome pipeline. Dry runs are now strictly read-only and print the full proposed review list; apply preserves unresolved prior review entries and records actual moved, collision, failed, and unattempted outcomes. Directory/file size limits, credential-bearing content, authored assets, nested checkout markers, unreadable paths, and move-breaking symlinks now conservatively force review. al organize-scratchnow accepts non-repository and untracked/non-ignored roots but always refuses repository roots, including empty or unborn repositories, as well as subtrees containing tracked content. Git fact failures fail closed under stable English diagnostics. Registered entry, nested, foreign main, and foreign linked worktrees are all protected and repaired from the correct repository context, including newline-containing paths and external linked registrations owned by a moved main checkout, with failed or stale repairs returning non-zero. Invalid--keeppaths now fail explicitly instead of being ignored.make devis now a fast formatting and lint loop (make fmtthenmake lint) instead of chaining coverage and release tests.make ciremains the complete pre-PR verification gate.- Public website pages and best-practice guides were rewritten for clearer, more direct language.
Fixed
- Listing
.agent-layer/tmpin.agent-layer/upgrade-keep-listnow keeps that directory and skips the grouped tmp deletion prompt. Individual files under tmp remain ineligible for the keep list. The interactive keep-list checklist includes.agent-layer/tmplast, unchecked. - Codex project trust is now seeded using the physical repository path after symlink resolution, so a repo opened through a symlink matches the managed
[projects."<root>"]trust key. Trust-root resolution fails explicitly when the path cannot be canonicalized. - Nested upgrade keep-list file entries no longer treat ancestor directories as fully kept, so sibling unknown paths remain eligible for deletion.
- Upgrades now preserve the
.agent-layer/anddocs/agent-layer/git tracking choices stored in.agent-layer/gitignore.blockwhile still applying new managed ignore rules from the release template. Match,al upgrade plan, and overwrite preview compare against that merged target, so customized tracking alone is not reported as an update. A#after a managed tracking pattern is rejected as unsupported, because Git treats that text as part of the pattern rather than a comment. - Locked source loading removes empty immediate child directories under
.agent-layer/skills/before validation, so sync, launch, dispatch, and skill-import share the same cleanup. Nonempty or malformed skill directories still fail strictly.
v0.17.1 - 2026-08-21
Added
al skills diff <name>compares livebase,local,upstream, anddestinationtrees as an ordinary Git unified diff.- Pull and push merge conflicts now leave a Git workspace under
.agent-layer/tmp/skill-conflicts/<name>/. Finish the merge with ordinary git commands andal skills resolve <name>. ship-princludes a statelessread-pr-comments.shcommand that prints every PR comment kind, including review-thread resolved/outdated state, as readable Markdown.
Changed
- The Claude instruction shim is now
.claude/CLAUDE.mdinstead of rootCLAUDE.md. When Grok is enabled, sync sets[compat.claude] agents = falsein repo-local.grok-config/config.toml, and Grok launch/dispatch/VS Code setGROK_CLAUDE_AGENTS_ENABLED=false, so Grok does not load both generated instruction files. The0.17.1migration deletes Agent Layer-generated rootCLAUDE.mdfiles; hand-authored files at that path are left untouched. - Recreating a deleted contribution branch reuses its prior publication checkpoint when that commit remains in the destination's history, avoiding conflicts with changes already merged from the earlier branch.
v0.17.0 - 2026-08-20
Added
- Grok Build CLI is a first-class Agent Layer client:
al grok,[agents.grok](enabled,model,reasoning_effort,disable_memory), always-onGROK_HOME=<repo>/.grok-config, native.grok/config.tomlMCP and[permission]projection, seeded folder trust,--sandboxmapping, shared.agents/skills/skills, doctor warning for a missing or older-than-1.0.5grok,al probe grok, wizard coverage, Agent Dispatch targetgrok, andnotifications.chimevia.grok/hooks/agent-layer-chime.json. Upgrade0.17.0defaultsagents.grok.enabledtofalse.
Fixed
- Grok sync now recognizes generated
.grok/config.tomlfiles by a stable marker across header revisions, requires the credential-bearing.grok-confighome to be a real directory, and rejects symlinks before seeding repo trust outside the isolated home. Sync,al grok, Grok dispatch, andal vscodecreate that home at0700and tighten an existing real home the Grok CLI created at0755, instead of failing with achmod 700instruction. Grok dispatch and capability probes also bound retained provider output with accurate truncation notices.
v0.16.3 - 2026-08-09
Added
- Added one content-addressed DeepSWE study workflow:
al benchmark run <study.toml>executes explicit experiments from a website selection, resumes immutable cell evidence, and produces JSON and HTML reports with fixed-selection Welch comparisons and Holm-adjusted p-values.al benchmark readinessremains the developer preflight for the pinned task catalog.
Changed
- Removed the obsolete
benchmark baseline,benchmark treatment,benchmark report, matrix runner, andbenchmark correct-scoresimplementations. Compatible historical selection evidence is read narrowly by the study reporter and corrected automatically from preserved verifier artifacts; private campaign state is never scanned or rewritten.
Fixed
- The built-in Agent Dispatch MCP server now starts from the repository root embedded during
al sync, so installing a newer globalalno longer causes MCP clients with an older repo pin to bypass that pin. The launcher keeps the legacyal dispatch mcp-serverargument contract when it reaches the cached binary, preserving compatibility with older pinned releases, and retains a same-project caller working directory for dispatched agents. Existing generated MCP files need a one-time refresh with the fixed binary (AL_VERSION=v0.16.3 al sync); this does not change the repo pin.
v0.16.2 - 2026-08-08
Added
- Added
al benchmark correct-scoresto regenerate versioned canonical results for affected stored DeepSWE runs from preserved verifier evidence. Benchmark reports consume the canonical result and fail rather than emit a known-incorrect score when neither it nor the required verifier artifacts remains available.
Changed
- The generated
.agent-layer/.gitignoreno longer ignoresskills-imported/orskills.lock.json. In a project that commits.agent-layer/, imported skills and their lockfile are now tracked, so a fresh clone or CI run has the exact imported skill content — including local edits — without a networkal skills pull, and apinnedimport reproduces without one. The two must be committed together: the imported tier is fully managed, andal syncrejects a skill directory that has noskills.lock.jsonentry..agent-layer/skills-imported/.staging/, the import transaction's scratch space, stays ignored..agent-layer/.gitignoreis agent-owned and rewritten on everyal init/al upgrade, so existing projects pick this up with no migration; rungit add .agent-layer/skills-imported .agent-layer/skills.lock.jsononce after upgrading to start tracking them. Note that the root.gitignoreblock still ships/.agent-layer/uncommented, which ignores the whole directory and overrides this; projects that want their Agent Layer configuration in version control comment that line out in.agent-layer/gitignore.block.
Fixed
- Repeated
al skills pushcalls to a contribution branch now record the last successfully published tree separately from the source lock, so review-driven edits and explicit reversions add commits to the same pull-request branch without conflicting with or silently preserving the previous push. Compatible edits made directly on the destination branch are still retained. This release reads existing skill lock schema version 1 files and writes version 2 whenever it next changes a lock; every consumer of a committed version 2 lock must upgrade, while older Agent Layer binaries reject it with an explicit unsupported-version error instead of misreading new fields.
v0.16.1 - 2026-08-06
Fixed
al initandal upgradeno longer block when.agents/skills/or.claude/skills/contains content that cannot be matched to a canonical Agent Layer skill. Those client roots are exclusively owned disposable projections, so inspecting their contents before replacing them contradicted the documented sync contract and prevented some v0.15.0 projects from upgrading to v0.16.0.
v0.16.0 - 2026-08-06
Git-backed Agent Skill imports and a consolidated skill and instruction bundle.
Added
- Git-backed Agent Skill imports.
al skills add <repository> <selector>...records an import in a new[[skills.imports]]config block,al skills pullfetches every configured source and reconciles it with local content,al skills statusreports local state without touching the network,al skills reset <name>discards one skill's local edits,al skills removedrops a selector, andal skills pushpublishes local changes back to a configured destination. Imported skills live in.agent-layer/skills-imported/<skill-name>/and stay editable;pullmerges upstream changes without discarding local edits. Each import block carries its ownref,tracking(trackedorpinned), andwrite_policy(none,branch, ordirect);write_policy = "branch"requires an explicit non-primarypush_branch, andal skills pushrefuses to write to the destination's actual default branch.add,remove,reset, andpushprompt before persistent configuration changes, destructive reset, or remote publication; non-interactive callers confirm with--yes. The generated.agent-layer/.gitignoreignores bothskills-imported/and theskills.lock.jsonstate file. - A bundled
skill-synccatalog skill for managing those imports from an agent. Its pre-approved shell surface is limited toal skillsandal sync. al organize-scratch --root <dir>sorts a scratch directory intoreports/,artifacts/, andreview/folders and writes anORGANIZE-REVIEW.mdlisting everything that still needs a human decision. It only moves entries: nothing is deleted, overwritten, or merged, and an entry whose destination is already taken is left in place. Defaults to a dry run; pass--applyto move. Registered Git worktrees are left alone unless--move-worktreesis given, in which case their registrations are repaired after the move. The command is a maintenance aid and is hidden fromal --help.
Changed
- Skill sources now use one strict, byte-exact tree contract. User-managed and Git-imported skills both require uppercase
SKILL.md, reject symlinks and other non-regular nodes, preserve unknown/provider-specific frontmatter and every resource byte, and project from one locked immutable snapshot. Agent Layer now owns.agents/skills/and.claude/skills/completely: enabled roots are replaced wholesale and disabled roots are removed. Thev0.16.0migration blocks before mutation if a pre-existing client root contains an entry that is neither marker-bearing output from a released Agent Layer version nor a directory matching a source-tier skill directory with a canonical regularSKILL.md. - The workflow skill templates are consolidated.
implementreplaces theplan-work,review-plan,implement-plan,fully-implement-plan, andfull-workflowchain, andship-prabsorbsaddress-pr-commentsandfix-cias references.boost-coverage,clean-and-fix-code,improve-codebase,review-uncommitted-code,run-and-fix-all-checks,schedule-backlog,simplify-codebase, andverify-workare removed; their work is covered by the remaining skills. Existing installs keep their copies of the removed skills until they are deleted by hand;al upgradereports them as orphans rather than removing them. debug-and-fix-issueis removed. No remaining skill covers reproduce-then-diagnose debugging; run those investigations directly, or hand the diagnosis toimplementonce the cause is known.docs/agent-layer/ROADMAP.mdis no longer a memory file. The template is removed and the memory instructions,audit-memory,audit-documentation, and theimplement-backlogloop mode no longer reference it;BACKLOG.mdis now the only scheduling surface. An existingROADMAP.mdis left untouched on upgrade and simply becomes an ordinary project document.al upgradestill understands thememory_roadmap_v1ownership policy recorded in manifests from earlier releases, so upgrading a repo that has one continues to work.- The
agent-dispatchcatalog skill is renamed todispatch-agent, so agents now invoke it as/dispatch-agentand theimplement,ship-pr, andauto-skill-loopskills instruct that name. Thev0.16.0migration renames an installed.agent-layer/skills/agent-dispatch/directory to.agent-layer/skills/dispatch-agent/and fails if a populated destination already exists. The Agent Dispatch feature, itsal dispatchcommands, and the built-inagent-layerMCP tool names are unchanged. - The managed instruction templates and the
dispatch-agent,audit-documentation,audit-memory,audit-tests,auto-skill-loop, andinterface-auditskills are rewritten for brevity. TheExplicit-only.description marker is dropped in favor of per-client invocation metadata. - The bundled instruction set is consolidated from five files to two:
00_rules.mdabsorbs01_base.mdand03_tools.md, and02_memory.mdbecomes01_memory.md. The user-managed04_conventions.mdtemplate is removed along with the user-owned instruction ownership rules; a project tailors instructions by editing the managed files or adding its own. Thev0.16.0migration renames02_memory.mdso its content carries forward. Existing01_base.md,03_tools.md, and04_conventions.mdfiles are left on disk — instruction fragments are user-editable and may hold project-specific rules — andal upgradereports them as orphans rather than removing them. Delete them by hand once you have moved anything you want to keep into00_rules.md.
Fixed
al dispatchnow deliversapprovals.modeto headless agents, which previously could not edit files in any mode exceptyolo.codex execstarts in a read-only sandbox andclaude -pdenies Edit/Write, so a dispatched agent approved to run commands failed on its first write. Dispatch now sendssandbox_modeto Codex (read-onlyfornone/mcp,workspace-writeforcommands/all) and--permission-modeto Claude (dontAsk/acceptEdits). Editing follows command approval because Codex has no separate edit-approval rule: its sandbox is the edit gate.yolois unchanged. Explicitagents.codex.agent_specific.sandbox_modeandagents.claude.agent_specific.permissions.defaultModestill win. Note thatworkspace-writekeeps.gitread-only and denies network access including loopback, so dispatched agents cannot commit or bind test servers without explicitagent_specificpassthrough.- Claude dispatches now pass the allowlisted commands and MCP servers as
--allowedTools. Claude applies a project'spermissions.allowrules only after its workspace trust dialog is accepted, and that dialog never appears under-p, so the generated settings file left every approval inert unless the repository happened to have been trusted in an earlier interactive session. - A dispatched Claude agent that is denied a tool call now fails the dispatch instead of reporting success. Claude returns exit 0,
is_error: false, and a fluent final answer for a run whose writes were all denied, so a denied dispatch previously looked complete. - Git subprocesses now resolve the repository from the path they are given instead of honoring an inherited
GIT_DIR. Git exports its repository-discovery variables to every hook, and they take precedence overgit -C <path>, so benchmark provenance and pinned-checkout validation could report on a different repository than the one being measured when a run started from a Git hook.
Internal
- Added the
v0.16.0migration and template ownership manifests. The migration claims the client skill projection roots, renames the managed02_memory.mdinstruction file to01_memory.md, and renames theagent-dispatchcatalog skill directory todispatch-agent. - The generated Homebrew formula no longer sets a redundant
versionfield; Homebrew derives it from the release asset URLs.
v0.15.0 - 2026-07-31
Agent Dispatch MCP and benchmark tooling release.
Added
- Agent Dispatch now exposes a built-in
agent-layerMCP server withdispatch_options,dispatch_start,dispatch_wait,dispatch_continue, anddispatch_cancel, using the same asynchronous handles, states, and durable result files as the CLI. The server is projected into enabled Codex, Claude, Antigravity, VS Code, and Copilot CLI clients. - Added
al benchmark baseline,al benchmark treatment, andal benchmark reportfor website-planned DeepSWE comparisons backed by immutable campaign evidence.
Changed
- The bundled Agent Dispatch skill now uses the built-in MCP tools for bounded leaf work, while the CLI remains the human and scripting surface.
- Workflow skills were simplified around explicit root-to-leaf boundaries, review gates, and delegated delivery.
- Renamed the bundled
playwright-cliskill toplaywrightwhile preserving the Playwright CLI command surface.
Internal
- Added the
v0.15.0migration and template ownership manifests. The migration renames the managedplaywright-cliskill directory.
v0.14.0 - 2026-07-22
Breaking Agent Dispatch lifecycle release. Dispatch now exposes asynchronous, handle-based conversations with durable result files instead of synchronous named conversations and fanout operations.
Added
al dispatch start,wait,continue, andcancel.startandcontinuereturn a handle immediately;waitblocks for the terminal state and returns the completed invocation's durable Markdownresult_path.- A stable JSON contract for every successful dispatch command. Independent
startcalls provide parallel work without a public fanout resource.
Changed
- Breaking:
al dispatchnow requires the explicit lifecycle commands above. The synchronous fresh/resume syntax andfanout,inspect,history,list, anddeletecommands are removed. - Breaking: per-agent
agents.<agent>.dispatch.default_agenttables are removed.startrequires--agent; the release migration deletes retired tables before strict config decoding. - Completed results are persisted atomically before their invocation becomes
completed; failed and cancelled conversations may be continued with the same handle.
Fixed
- Dispatch and client launchers preserve cancellation signals, and sync ignores its transient lock file.
- Updated
golang.org/x/textto v0.39.0 to remediate GO-2026-5970, which the release binary vulnerability scan detected in v0.38.0.
Internal
- Added the v0.14.0 migration and template ownership manifests. The migration supports the established 0.10.2+ upgrade range and deletes retired per-agent dispatch default tables.
v0.13.0 - 2026-07-17
Breaking Agent Dispatch redesign and workflow-skill refresh. Dispatch now starts fresh, final-answer-only provider turns by default, and exposes explicit continuation, inspection, history, cancellation, and fanout operations rather than streaming provider traffic.
Added
al dispatch resume <name>,fanout,inspect,history,cancel,list, anddelete. Named conversations have atomic mappings and immutable run-UUID records; fanout runs one shared prompt across independently retained targets.- Separate fresh, resume, and inspection capability facts in
al dispatch options --json, including installed provider versions and compatibility warnings. Claude Code 2.1.207, Codex CLI 0.144.1, and Antigravity 1.1.1 are the tested baselines; newer versions remain available with a warning, while older, unreadable, and malformed versions fail before launch. - Private bounded run evidence, 30-day retention for eligible evidence and
mappings, process-group supervision, final-answer replay, a safe pre-start
retry, and Antigravity’s isolated documented log-file ID extractor with
fail-loud
not resumablehandling. al hook chime, a project-shareable completion handler for Claude, Codex, and Antigravity. It filters non-terminal lifecycle events, fails open, uses the macOS system sound or Linuxcanberra-gtk-playwhen available, and never claims that a provider stop event proves task completion.
Changed
- Breaking:
al dispatchno longer streams answer text, progress, raw events, or provider diagnostics. Standard output contains only a successful final answer; standard error begins with one compact identity line. - Breaking: the v1
dispatch_capableand streaming options fields were removed from the public JSON contract. Use separate capability facts instead. - The default
dispatch.max_depthis now3, allowing two nested dispatches after the initial call. Built-in workflows remain root-to-leaf and use external dispatch only for bounded leaf judgment. - Antigravity's generated settings file is now shared state: Agent Layer patches only its managed model, permissions, and passthrough paths while preserving native workspace, approval, and trust settings.
- Codex VS Code launches now configure only extension-relevant runtime features; ordinary Codex CLI settings and status-line configuration are not projected into the VS Code path.
- Model suggestions were refreshed for Claude, Codex, Copilot CLI, and Antigravity in the wizard and dispatch option catalog.
- Version-binary handoff moved from
internal/dispatchtointernal/versiondispatchto distinguish it from Agent Dispatch. auto-skill-loopnow providesfix-issue-log,implement-backlog,improve-interfaces, andimprove-codebasemodes plus repository-added mode files. It selects adaptive fresh work, preserves local blockers, batches and ships centrally, keeps/ship-prisolated in its shipper dispatch, independently gates exact-head merge authorization, and reconciles each result without preplanning the full source.- Instruction-only assets now live under their owning skills'
references/directories; output and machine-readable resources remain underassets/. - Bundled workflow skills are now more explicitly root-to-leaf: orchestration
owns transitions and delivery, while Agent Dispatch is restricted to named,
bounded leaf roles. The refresh adds
clean-and-fix-code,debug-and-fix-issue,fully-implement-plan,review-uncommitted-code,run-and-fix-all-checks, andverify-workas the current workflow surface.
Removed
- Retired the standalone
fix-issuesskill after preserving its explicit filters, batching, dispositions, and one-delivery behavior in thefix-issue-logmode. - Retired superseded workflow skill names and wrappers, including
audit-and-fix-uncommitted-changes,debug-issue,review-scope,verify-against-plan,prune-new-tests,simplify-new-code,complete-current-phase,finish-task,repair-checks, andmulti-agent-plan-review. The migration manifest renames managed skill directories where a direct replacement exists; retirement remains ownership-aware and reviewable during upgrade.
Fixed
- Dispatch now waits for provider completion evidence and terminates failed process groups, preventing terminal failure while owned descendants continue.
- Projection preparation is serialized before provider launch, avoiding concurrent generated-skill writes while allowing independent targets to run concurrently afterward.
- Dispatch now preserves the caller's working directory across linked worktrees, records resolved targets for reliable resume, validates provider diagnostics, and closes cancellation and recovery races without releasing a live process claim prematurely.
al sync, launchers, and the root command preserve cancellation signals and logical repository roots more reliably. Upgrade rollback retries now reset scoped targets before restoring a failed snapshot, allowing a partial rollback to converge safely.
Internal
- Added the v0.13.0 migration and template ownership manifests. The migration supports upgrades from the 0.10.2 line and renames managed workflow skill directories and their instruction resources.
- Updated the Go toolchain to 1.26.5, modernized terminal UI dependencies, and added release-binary vulnerability scanning.
v0.12.3 - 2026-07-10
Patch release for the v0.12 line. Adds current Codex model and reasoning-effort suggestions, and fixes al sync so generated skill resources stay reconciled safely with their source trees.
Changed
- Codex model suggestions now include
gpt-5.6-sol,gpt-5.6-terra, andgpt-5.6-lunain the wizard and Agent Dispatch options. - Codex reasoning-effort suggestions now include
maxandultrain the wizard and Agent Dispatch options.
Fixed
al syncnow reconciles generated skill resources (scripts/,references/, andassets/) with their source skill directory: it removes stale resources and handles file/directory transitions without replacing the generatedSKILL.md.- Skill-resource sync now detects source symlinks without following them and safely replaces generated destination symlinks rather than writing through them.
Internal
- Added v0.12.3 migration and template ownership manifests. The migration has no operations; existing configurations need no manual migration.
v0.12.2 - 2026-07-06
Patch release for the v0.12 line. Tightens bundled skill and instruction contracts, fixes installer prompt routing edge cases, adds public skill-architecture documentation, and hardens the release workflow before signing.
Added
- Added the Agent Layer-specific Skills approach documentation page, including the target root-skill model, workflow-skill boundaries, and the mapping from target modules to current bundled skills.
- Added template tests covering bundled skill and instruction contract expectations so future wording changes are checked automatically.
Changed
- Bundled skill templates now state scope, deferral, review, and orchestration rules more precisely across planning, review, issue fixing, PR handling, verification, and autonomous-loop workflows.
- Multi-agent plan review instructions now make reviewer orchestration and synthesis responsibilities clearer, while participant terminology is standardized across skill and instruction docs.
- The Agent Dispatch catalog skill now activates only for explicit external dispatch targets or skill-directed dispatch, leaving generic subagent work to built-in subagent behavior.
- Universal skill, CLI-skill, and instruction design guides were generalized for portable authoring guidance and now separate client/specification requirements from Agent Layer-specific conventions.
- Release preflight documentation now reflects that CI, release-script checks, and upgrade-doc validation run before tagging.
- The release workflow now runs
make cibefore importing signing credentials.
Fixed
- Installer and upgrade prompt routing now flow through a shared prompt router, preserving required overwrite/delete prompt validation while centralizing optional prompt fallbacks.
- Statusline source replacement prompting is now gated on the actual optional prompt capability, preventing zero-value prompt implementations from being treated as wired callbacks.
- Zero-value prompt fallback behavior is covered for unified overwrite, grouped tmp deletion, statusline source, config defaults, and skills migration prompts.
- Agent Dispatch now forwards SIGINT and SIGTERM to the full dispatched process group, so shell-launched child processes terminate promptly on interruption.
- End-to-end assertions were updated for the retired generated Codex
.codex/AGENTS.mdshim.
Internal
- Added v0.12.2 migration and template ownership manifests. The migration has no operations; the release updates managed templates and docs only.
v0.12.1 - 2026-07-04
Patch release for the v0.12 line. Fixes binary Homebrew publishing, preserves Codex hook trust state across chime refreshes, and retires the generated .codex/AGENTS.md shim that duplicated root AGENTS.md when Codex used repo-local config.
Changed
al syncno longer writes.codex/AGENTS.md. Codex reads rootAGENTS.mdas project instructions, and repo-localCODEX_HOMEcaused.codex/AGENTS.mdto be loaded as home-level instructions as well.- Workflow instruction and skill templates were tightened for tradeoff handling, full-workflow spec approval, and prune-new-tests reviewer output.
- Release documentation now clarifies binary Homebrew tap PR handling.
Fixed
- Codex chime refresh now preserves existing hook trust state stored inside the managed chime markers and remains idempotent across repeated syncs.
- Homebrew formula generation now includes both macOS ARM64 and macOS Intel release assets.
- Homebrew binary formula installs now mark
alexecutable before generating shell completions. - The release workflow now verifies all binary assets needed by the Homebrew tap, including
al-darwin-amd64.
Internal
- Added v0.12.1 migration and template ownership manifests. The migration deletes only Agent Layer-generated
.codex/AGENTS.mdfiles; hand-authored files at that path are left untouched.
v0.12.0 - 2026-07-03
Consolidates all unreleased work since v0.11.0 into one coherent release. Adds typed Antigravity model selection, configurable Agent Dispatch depth, repo-local Codex home opt-in, shared Codex TOML patching, provider turn-stop chimes, serialized sync writes, new workflow skills, signed/notarized macOS binaries, and binary Homebrew delivery.
Added
- Antigravity model selection is now a first-class Agent Layer setting.
agents.antigravity.modelis projected into generated Antigravity settings,al wizardcan discover choices from liveagy modelsoutput with catalog fallback, andal dispatch --modelplusal dispatch optionsnow report and accept Antigravity model overrides. Antigravity reasoning level remains encoded in the selected model display string;--reasoning-effortis still unsupported for Antigravity. dispatch.max_depthallows nestedal dispatchchains beyond the default depth of1.AL_DISPATCH_ACTIVEnow carries the current dispatch depth, invalid or empty values fail loudly, and config validation rejects non-positive depths.agents.codex.local_config_dircontrols whether Agent Layer setsCODEX_HOME=<repo>/.codexforal codex, Codex dispatch, andal vscode. The default isfalse, preserving Codex's normal global/project config layering; set it totrueto keep repo-local Codex auth, sessions, logs, and runtime state.notifications.chimeis a global opt-in for provider turn-stop chimes. Sync projects provider-native stop hooks for Claude and Codex and an Agent Layer-owned Antigravity plugin, while preserving user-owned hooks and plugin content.al syncnow serializes concurrent writes for the same project with a repo-local lock, preventing overlapping generated-file updates during parallel launches or dispatches..codex/config.tomlis now treated as shared state. Agent Layer patches only managed Codex keys, MCP projection, project trust, feature toggles, and statusline entries while preserving unrelated user or Codex runtime TOML, comments, multiline strings, and plugin settings.al wizardadds a Git tracking step for.agent-layer/anddocs/agent-layer/, implemented by rewriting the managed.agent-layer/gitignore.blocksource before sync.- New built-in workflow skills:
auto-skill-loop,full-workflow,interface-audit, andmulti-agent-plan-review.ship-pralso gained a bundledmonitor-pr.shhelper for polling pull request readiness and filtering review-bot noise. - Release builds now sign Darwin binaries with Developer ID, enable hardened runtime, notarize them with Apple, and write checksums after signing. The release workflow also documents the required signing and notarization secrets.
- Homebrew delivery now uses prebuilt macOS and Linux release binaries with per-platform checksums instead of building from the source tarball.
- Shared provider option catalogs now back wizard and dispatch option suggestions for supported agents, with corrected Codex model/reasoning suggestions and
fablein the Claude model catalog.
Changed
al claude,al codex,al copilot, andal agynow replace thealprocess with the target agent CLI instead of spawning a child process. Agent exit codes now pass through directly and the oldError: <agent> exited with error: ...wrapper line is gone.- macOS permission prompts are now attributed to the actual signed Agent Layer binary that launches the agent. Users may see one prompt per agent after upgrading; old
alentries in Privacy & Security are cosmetic. approvals.mode = "yolo"no longer emits the VS Codechat.tools.global.autoApprovesetting. YOLO still sends full-auto controls to Claude, Codex, Copilot CLI, and Antigravity.al wizardno longer offers a workflow-bundle refresh when Agent Layer workflow files already exist. The workflow-bundle prompt is install-only for missing bundle files and preserves existing files; useal upgradefor managed workflow updates.- Agent-specific passthrough config now uses the shared
ProviderPassthroughtype, and Agent Layer-owned Antigravity model config is rejected underagents.antigravity.agent_specific.model. - The Claude status line now rounds weekly-limit reset time up to the next whole day/hour so a partial remaining unit stays visible, drops the
#prefix on the session id, and avoids per-untracked-filegit diff --no-indexprocesses when counting untracked line changes. - Agent Dispatch target metadata now uses the shared provider option catalog, reports Antigravity model override support, preserves inherited
CODEX_HOMEunless Codex local config is enabled, and wraps stdout write failures with target-specific dispatch exit errors. - Release tooling now verifies published binary assets before opening the Homebrew tap PR and renders the full binary formula from release checksums.
- CI/local workflow documentation now notes that
make ciincludesmake test-race, and release docs clarify that tagged migration and ownership manifests are immutable release artifacts.
Fixed
- Upgrades move
agents.antigravity.agent_specific.modeltoagents.antigravity.modelbefore strict runtime validation rejects the passthrough key. - Wizard Git tracking recognizes managed patterns with inline comments and avoids duplicating them.
- Antigravity wizard model options are prefetched before prompting, so the wizard can show live model choices rather than a stale or empty catalog.
- Codex reasoning suggestions and restored shared agent option suggestions now stay valid across CLI, wizard, and dispatch surfaces.
- Codex TOML patching now preserves multiline strings, plugin defaults, inline comments on managed keys, and unrelated shared config while updating Agent Layer-owned entries.
- Strict config validation now fails loudly on malformed nested
AskUserQuestionoverrides and invalidAL_DISPATCH_ACTIVEdepth values. - Gitignore management was hardened to prevent managed block data loss and handle inline-comment tracking defaults correctly.
al doctordiagnostics and CI dead-code enforcement were corrected, including loader-error handling that previously weakened the dead-code gate.- The hidden deprecated
al mcp-promptspath is now a no-op stub instead of a live prompt delivery surface. - Release and formula update tests now cover signed binary build outputs, checksum extraction, notarization hooks, and binary Homebrew formula rendering.
Security
- The Go toolchain/dependency floor was updated to address reachable Go standard-library vulnerabilities found by local vulnerability analysis.
- Codex trust-block generation now rejects invalid UTF-8 repository roots before writing project trust entries.
- The release workflow now checks out code with persisted credentials disabled in the release build job.
Documentation
- README, site docs, troubleshooting, concepts, reference, FAQ, and security pages were refreshed for current Antigravity, MCP, Codex, upgrade, and release behavior.
docs/RELEASE.mdnow documents Developer ID signing, notarization, binary Homebrew delivery, release asset verification, and the complete set of required release secrets.- Agent instruction templates were tightened: production code should validate inputs and returned errors defensively, repeated failed fixes should trigger research before another attempt, and memory files are described as living records of the current working tree.
- Skill design and CLI skill design docs were tightened, and generated workflow skills now include clearer subagent/review constraints.
Internal
- Shared semver parsing/comparison moved into
internal/version, and release message helpers were consolidated. - A reusable TOML patching engine (
internal/tomlpatch) now powers safer shared-config edits. - Upgrade migration logic was split to keep skill migration code separate from the main migration coordinator.
- Markdown heading slug generation now avoids quadratic suffix deduplication on large documents.
- Test coverage was expanded across dispatch depth, Antigravity model discovery, Codex shared-config patching, chime cleanup, sync locking, release tooling, wizard option discovery, gitignore tracking, and upgrade migration contracts.
v0.11.0 - 2026-06-03
Replaces Gemini CLI support with the agy-backed Antigravity integration, adds Agent Dispatch for focused second-agent work, ships explicit opt-in Claude/Codex status lines, expands the wizard into a workflow-bundle, CLI-skill, and deterministic answer-file setup flow, hardens upgrade/CI release workflows, and publishes the public best-practice guides from canonical repository docs.
Added
- Agentic status lines for Claude Code and Codex, explicit opt-in per provider.
al wizardand interactiveal upgradecan writeagents.claude.statusline = trueoragents.codex.statusline = trueand seed missing editable sources once.al syncthen projects.agent-layer/claude-statusline.shto.claude/claude-statusline.shand wiresstatusLineinto.claude/settings.json; for Codex it injects a managed[tui].status_lineblock into.codex/config.tomlfrom.agent-layer/codex-statusline.toml(skipped when you defineagent_specific.tui.status_lineyourself). The Claude line renders model, reasoning effort, context %, weekly usage limit, session, directory, git branch/dirty state, lines changed, and session cost; it requiresjqonPATHand degrades to a one-line hint when absent. Absent or explicitfalsedisables the statusline. Existing source files are user-owned: sync, wizard, and non-interactive upgrade never overwrite them; interactive upgrade can show a diff and ask before replacing them. al dispatchandal dispatch optionsfor focused headless second-agent work across Codex, Claude, and Antigravity. Dispatch accepts prompt text from arguments or stdin, can invoke a portable Agent Layer skill with--skill, supports target selection via--agent(includingrandom), reports model/reasoning override support through text or JSON options output, streams target answer text to stdout, writes wrapper status/errors to stderr, and uses stable wrapper-owned exit categories. Agent Layer-launched clients receiveAL_DISPATCH_CALLER_AGENT; dispatched targets receiveAL_DISPATCH_ACTIVE=1so nested dispatch is blocked.al wizardnow offers five per-agent feature disable toggles, folded into the existing model step (most default to No, keeping the client's native behavior; the Codex apps toggle is the exception and defaults to Yes, disabling apps): disable Codex browser/computer-use (features.browser_use/in_app_browser/computer_use) and built-in apps (features.apps); disable Claude's IDE open-file reading (env.CLAUDE_CODE_AUTO_CONNECT_IDE), auto-memory (autoMemoryEnabled), claude.ai connectors (env.ENABLE_CLAUDEAI_MCP_SERVERS), and the AskUserQuestion tool. The first three Claude toggles and the Codex toggles write their client-nativeagent_specifickey only when you opt in; the AskUserQuestion toggle writes a typedagents.claude.disable_question_toolflag andal syncinjects the matchingpermissions.denyentry plus aPreToolUsehook into.claude/settings.json, merged with (never replacing) any deny/hook entries you already have. All toggles read back from existing config so re-running the wizard preserves your choice. The Codex "apps" prompt is reworded to the shared "Disable …?" form (its enabled-state storage is unchanged).al wizardnow asks whether to install or refresh the Agent Layer workflow bundle (instruction files, memory templates/docs, and built-in workflow skills). Bareal initcreates only operational scaffolding with emptyinstructions/andskills/; answering "no" in the wizard leaves existing workflow files untouched. Answering "yes" refreshes managed bundled instruction files and workflow skills, creates missing04_conventions.mdand memory docs/templates, and preserves existing user-owned conventions and memory files.al wizardnow includes an opt-in CLI skill catalog fortavily-web,playwright-cli,find-docs, andagent-dispatch. Selected catalog skills are copied into.agent-layer/skills/<id>/; unselected catalog skills are removed.al doctorchecks installed catalog skills for required binaries and reports missing tools without blocking agent launch.al wizardnow detects MCP servers inconfig.tomlthat are not part of the default catalog and asks about them in a dedicated step, separate from the catalog multiselect. Selected servers stay enabled; unselected servers are set toenabled = falsewith their definition preserved — disabling never deletes a custom server (it has no catalog template to restore from). The step is skipped when there are no custom servers, and the apply summary lists any custom servers being disabled.al wizard --answers <file>for deterministic JSON-driven wizard runs. Answer files can script select, multi-select, confirm, input, and secret-input prompts; the runner bypasses terminal detection, rejects--profile/--yesconflicts, validates unknown fields, invalid options, multiple JSON values, missing prompts, and unused answers, and gives e2e coverage a stable way to exercise the real wizard flow without PTY automation.al doctornow prints a context size summary after its checks: estimated instruction tokens, skill catalog-metadata tokens (against a ~4,000-token budget), MCP totals (enabled servers, total tools, total tool-schema tokens), and an estimated total of the always-loaded token costs (instructions + skill catalog + MCP tool schemas). Configurable metrics show their configured threshold; the skill catalog shows its fixed token budget. The summary always prints — even when values are under threshold and even withnoise_mode = "quiet"oral --quiet doctor— because it is informational, not a warning. Thresholds left unset show(no limit set); components that can't be measured are named in an(excludes …)note on the total, and unreachable MCP servers are excluded from totals with a note. A one-offal --quiet doctorrun suppresses warning-only doctor output while still surfacing failures.- Antigravity support via
al agy, backed byagy --gemini_dir=<repo>/.agyand repo-local settings under.agy/antigravity-cli/. al probe agycapability probe reports Antigravity permissions, MCP config migration, and runtime MCP discovery status as JSON.- Public best-practice website guides for skill design, CLI skill design, and instruction design. The release publisher now generates
/skill-design,/cli-skill-design, and/instruction-designfrom the canonical repository docs with public page headers, and/best-practiceslinks the guide set together. config_delete_keyandconfig_replace_stringupgrade migration operations and a v0.10.2 migration that movesagents.gemini.enabledtoagents.antigravity.enabled, rewrites MCP client lists fromgeminitoantigravity, deletes stale Gemini and retired Antigravity desktop config keys, and defaults Antigravity to disabled when no prior Gemini setting exists.make al-agydeveloper convenience target.make lint-ci-localdeveloper target for no-Docker CI-parity golangci-lint runs. It uses disposable Go build, module, and golangci-lint caches withGOOS=linux GOARCH=amd64 CGO_ENABLED=0, and the command is documented inCOMMANDS.md.
Changed
- The shipped
al inittemplate no longer disables Claude Code's AskUserQuestion tool by default. Fresh installs now allow the tool (matching Claude Code's native default) instead of seedingagent_specific.permissions.deny = ["AskUserQuestion"]. The wizard's new opt-in toggle instead setsagents.claude.disable_question_tool = true, andal syncinjects thepermissions.denyentry plus aPreToolUsehook into.claude/settings.json— merged with (never replacing) any deny/hook entries you already have. The hook is what enforces the block under YOLO/bypassPermissions, wherepermissions.denyis skipped entirely. Existing repos are unaffected (config.tomlis never overwritten on upgrade); runal wizardto opt back in. al wizardno longer deletes default MCP servers you unselect. Previously, unticking a catalog default in the wizard pruned its[[mcp.servers]]block (and any hand-customization) fromconfig.toml. Now an unselected default that already exists is kept withenabled = false, matching how custom servers are handled — the wizard never deletes a server block. Selecting a default that is absent still adds it from the embedded catalog; leaving an absent default unselected leaves it absent. Fully removing a server is now a manualconfig.tomledit. Profile/--yesruns are unaffected.- The
al upgrademigration report no longer prints[no_op]rows (migrations that ran but changed nothing because the target was already in the desired state). Only[applied]and[skipped_*]rows are shown. The report header, target/source versions, and any source-resolution notes still print so diagnostics are preserved. This removes the wall of noise that dominated upgrade output when most migrations were already satisfied. - The recurring
agent-layer update availablewarning (shown onal syncandal <client>runs) now tells users how to turn it off: setversion_update_on_sync = falseunder[warnings]in.agent-layer/config.toml. The default stays on, andal doctor's update check is unaffected. - Shipped agent instructions (
01_base.md) now: direct agents to add real logging/instrumentation to the code to gather evidence on repeated failures instead of guessing; tell agents to zealously preserve context by delegating context-heavy work to subagents; and explicitly encourage scratch scripts and temporary files under.agent-layer/tmpfor debugging. - Shipped instruction templates were also tightened: the hard-rule template now leads with grounding unknowns, several generic rules moved out of always-loaded rules, response-style guidance was made explicit, tool-routing now prefers local files/CLIs before MCP or web retrieval when local sources can answer, and relevant skills should be activated automatically from their descriptions.
- The default MCP server catalog now contains the external-tool servers
context7,tavily,fetch, andplaywright. The previousripgrepandfilesystemcatalog entries were removed from the embedded wizard catalog; existing hand-authored MCP server blocks are preserved, and custom servers are now handled by the dedicated custom-server wizard step. - The release website publisher now stages pages before copying, generates public guide pages from canonical Markdown sources, escapes plain-text angle brackets for MDX safety, builds guide tables of contents from real headings, and keeps versioned-doc publishing idempotent for the target tag.
- CI and release workflows now pin third-party GitHub Actions to immutable commit SHAs with version comments across both workflows.
- Shared skill projection now treats Antigravity as the supported shared-skill consumer in place of Gemini CLI.
- Fresh
al initnow defaults[agents.antigravity] enabled = false(the priortruedefault was scoped to the retired Antigravity desktop launcher). Existing repos keep their migrated value from the v0.10.2 migration; users on the retired desktop launcher will have their pre-existing enable flag replaced by the rename fromagents.gemini.enabled(or the new default if no Gemini config existed). The v0.10.2 row insite/docs/upgrades.mdxdocuments the replacement behavior. - Claude
reasoning_effortno longer requires an Opus model. Agent Layer previously failed config validation foragents.claude.reasoning_effortunlessagents.claude.modelwas an Opus variant — and rejected it outright when the model was unset. That hard error is removed: the value is passed through to Claude Code for any model (including when no model is set), and Claude Code is the authority on which model/effort combinations apply (e.g. Sonnet now supports effort levels).al wizardcorrespondingly offers the reasoning-effort prompt for any enabled Claude model instead of only Opus, and no longer clears the choice when you switch models. Copilot CLIreasoning_effortis still rejected, since that client exposes no effort control. - Wizard and installer status-line source handling now share the same exported source metadata, including canonical paths, legacy Claude source path, template path, and permissions, instead of maintaining separate mappings.
Fixed
al doctorno longer warns merely becausedocs/agent-layer/is absent in a bare-initialized repo. Bareal initintentionally does not create optional workflow memory docs; doctor now warns only when.agent-layer/instructions/*.mdreferencesdocs/agent-layerand the directory is missing.al doctornow reports the configured Copilot CLI enablement state. The default config enables[agents.copilot_cli], but doctor previously omitted that agent row even though sync generated Copilot CLI artifacts.- Copilot CLI's generated
.copilot/mcp-config.jsonnow keeps an explicit empty"mcpServers": {}object when no Copilot MCP servers are enabled, matching the documented shape and the other MCP client writers. al wizardnow redirects toal upgradewhenconfig.tomlcontains a legacy key that only a migration can fix (e.g. a leftover[agents.gemini]table). Previously the wizard announced it would help fix the config, then ransync, which re-validated strictly and hard-failed with a rawconfig validation failederror — a dead end, because the wizard's config patch preserves unknown sections verbatim and never runs the rename migration. The wizard now detects this class (a newErrConfigNeedsUpgradesentinel wrapped by config validation) and prints a clear "runal upgrade, then re-runal wizard" message, exiting cleanly instead of failing at sync.al doctor's Antigravity version check now accepts the bare version string (e.g.1.0.2) thatagy --versionprints in Antigravity 1.0.x. Previously the check required anagy-prefixed line (agy 1.0.0) and reported[FAIL] Could not parse Antigravity versionagainst a working install. Multi-line build-timestamp noise is still rejected: the bare form is only accepted when the entire--versionoutput is a single version triple.- Upgrade planning now treats wizard-managed CLI catalog skills as managed files instead of unknown files, and unpinned dev/legacy upgrades can trigger source-agnostic operations across the target-supported manifest chain when legacy Gemini config or missing source-agnostic defaults prove there is migration work to do. Pinned upgrades keep their normal source-to-target chain.
al wizardnow reseeds a missing Claude or Codex statusline source when the effective post-wizard config has that provider's statusline enabled, even if you did not re-toggle the setting in the current run. Previously an enabled repo with a deleted source file could complete the wizard and then fail during sync.- Upgrade diff previews for a missing
.agent-layer/claude-statusline.shnow show legacy.agent-layer/statusline.shcontent when that legacy file will seed the new source, and the legacy source is classified as known so upgrade unknown-file scans do not prompt to delete it. - The Claude statusline now counts untracked-file line changes without spawning one
git diff --no-indexprocess per untracked file, avoiding prompt stalls in repos with many unignored files. - The
upgrade-profile-overwrite-claudee2e scenario now scopes MCP sanitization assertions to the affected server blocks instead of scanning the wholeconfig.toml, avoiding future false failures when another server legitimately uses similar fields.
Removed
- The
al wizard"Default MCP server entries are missing from config.toml: … Restore them before continuing?" confirm prompt. Missing catalog defaults are now just unselected options in the MCP multiselect — select one to add it, leave it unselected to keep it absent. The prompt was effectively a no-op anyway (it defaulted to "yes" while the multiselect still showed missing defaults unselected, so the rendered config tracked the multiselect, not the answer). - Gemini CLI sync/client projection, including generated
.gemini/settings.json,.gemini/policies/agent-layer.toml, the global~/.gemini/trustedFolders.jsonwrite, and the rootGEMINI.mdinstruction shim, has been replaced by Antigravity projection. The v0.10.2 migration cleans up any orphanGEMINI.mdin existing repos. Historical release notes below remain unchanged. al geminisubcommand removed entirely (no deprecation window). Existing scripts must switch toal agy; invokingal gemininow produces cobra's standard "unknown command" error.- Duplicate carry-forward Gemini-to-Antigravity migration operations from the v0.11.0 manifest. Unknown-source upgrades now discover those source-agnostic operations from their original v0.10.2 manifest through the supported-chain planner.
- Internal
buildCodexConfigtest-only shim. Tests now call the System-aware Codex config builder directly.
v0.10.1 - 2026-05-17
Adds diff-scoped cleanup skills (prune-new-tests, simplify-new-code) and wires fresh-context reviewer subagents into five existing skills to prevent narrative-driven rationalization. Introduces al init --here for in-place installs in subdirectories of existing repos, deep-merges Claude agent_specific configuration so permissions.deny is additive, auto-writes a Codex per-repo trust stanza, and adds a human-gated merge phase to ship-pr.
Added
al init --hereflag installs Agent Layer in the current directory without walking up to an ancestor.agent-layer/or.git. Lets users add a separate.agent-layer/inside a subfolder of an existing repo. Whenal initresolves to an already-initialized ancestor, the error now points at--hereso the option is discoverable.agent_specific.permissions.deny = ["AskUserQuestion"]shipped in the install seed (internal/templates/config.toml). Freshal initnow disables Claude Code's structured clarification-question tool by default; remove the line to keep it. Existing repos are unaffected.prune-new-testsskill — burden-of-proof pruning of tests added in the current uncommitted diff. Each added test must defend its existence with a concrete production-code mutation that would flip its assertion or it is auto-deleted. Surviving coverage gaps are reported, never backfilled. Uses a fresh-context reviewer subagent so the implementer's narrative cannot rationalize speculative tests into surviving.simplify-new-codeskill — diff-scoped scope-creep removal. Scans the current uncommitted diff for agent-added speculative flexibility, premature abstractions, dead branches, impossible-case error handling, defensive scaffolding, clever patterns, and half-finished work, and auto-applies simplifications while preserving the user-requested behavior. Uses a fresh-context reviewer subagent that identifies scope creep by pattern, not by comparison to the request.
Changed
- Built-in skill frontmatter descriptions are shorter and more routing-focused, reducing Claude skill listing budget pressure while keeping key trigger language.
simplify-codeskill renamed tosimplify-codebaseand scoped explicitly to the codebase (full repository or explicit paths). The implicit "if uncommitted changes exist, scope to the diff" branch is removed —simplify-new-codeis the diff-scoped sibling. All in-repo callouts updated: diff-context skills (debug-issue,complete-current-phase,fix-issues,implement-plan,audit-and-fix-uncommitted-changes) now point atsimplify-new-code; codebase-context skill (improve-codebase) points atsimplify-codebase.implement-planskill inserts mandatory cleanup phases between implementation and verification: Phase 4 runsprune-new-testswhenever tests were added, Phase 5 runssimplify-new-codewhenever production code was added or modified, and Phase 6 (renumbered from 4) handles plan-vs-implementation verification.audit-and-fix-uncommitted-changesskill adds Phase 0.5 (Pre-pass Cleanup) that runsprune-new-testsandsimplify-new-codebefore any review round, so reviewers don't spend budget on code about to be pruned.verify-against-planskill restructured around a plan-anchored, narrative-blind fresh-context reviewer subagent. Phase 2 now delegates plan-vs-implementation comparison to a subagent that sees only the plan and the post-implementation state — never the implementer's narrative, prior conversation, or deviation rationalizations.address-pr-commentsPhase 6 (reply audit) restructured around a fresh-context reviewer subagent. The original author's replies are audited by a subagent that sees only the comment, the reply, and (forFixedverdicts) the named commit's diff — not the agent's prior reasoning when authoring the replies.improve-codebasePhase 3 per-chunk re-audit restructured around a fresh-context reviewer subagent. The post-fix chunk and the originating findings are the only inputs; the fixer's narrative is excluded so sunk-cost reasoning ("we just fixed that") cannot rubber-stamp incomplete fixes.- Claude
agent_specificis now deep-merged into.claude/settings.jsonfor object values (arrays and scalars still replace at their key). Previously, top-level objects were replaced wholesale.permissions.denyis additive and does not trigger an override warning;permissions.allowcontinues to warn when present. - Codex sync now writes
[projects."<repo root>"] trust_level = "trusted"to repo-local.codex/config.toml, preserving Codex's exact absolute-path trust semantics without requiring a per-repoagents.codex.agent_specific.projectspassthrough. Theagent_specific.projectsoverride warning is path-aware: it only fires when the user'sprojectsmap contains the managed repo root (real collision), not when it lists unrelated paths that coexist with the managed entry. ship-prskill adds a human-gated Phase 9: the agent merges the PR only when the user replies with the exact phraseI approve merging PR #<N>matching the run's PR number, using an unambiguous GitHub merge method or pausing for a strategy choice when multiple methods are available; on a successful merge it deletes the source branch locally and remotely. The skill refuses to delete the repository's default branch.ship-prskill adds an upfront "Continuation rule" framing sub-skill returns as intermediate, not terminal. Addresses a recurring failure where the orchestrator stopped afteraudit-and-fix-uncommitted-changesreturned, mistaking the sub-skill's closeout summary for ship-pr's completion.
v0.10.0 - 2026-05-07
Consolidates skill projection into a shared .agents/skills/ directory for non-Claude clients, migrates Gemini sync to the Policy Engine, splits the MCP catalog from the install seed, adds xhigh reasoning effort for Claude, and improves the upgrade experience with automatic post-upgrade sync and opt-in diff preview.
Added
- Skills synced to a shared
.agents/skills/<name>/SKILL.mdtree for non-Claude clients (Codex, Gemini, Antigravity, VS Code/Copilot, Copilot CLI). Per-client directories (.codex/skills/,.gemini/skills/,.agent/skills/,.vscode/prompts/,.github/skills/) are retired and cleaned automatically byal sync. Projection rules and ownership contract documented indocs/SKILL-CLIENT-SPEC.md. chat.agentSkillsLocationswritten to.vscode/settings.jsonpointing at.agents/skills/so VS Code Copilot picks up the consolidated location.xhighas a validreasoning_effortvalue for Claude. Custom (unknown) effort values now pass through with a warning instead of a hard validation error._generatedBy: agent-layerprovenance field added to generated.mcp.jsonand.gemini/settings.jsonfor stronger ownership detection during upgrade readiness checks; replaces the weakmcpServers-only signature.- Internal MCP server catalog (
mcp-catalog.toml) embedded in the binary and consumed byal wizardfor its MCP server multiselect; decoupled from the install seed so freshconfig.tomlfiles start with a minimal[mcp]section.
Changed
- Gemini sync migrates from the deprecated
tools.allowedfield to the Policy Engine.WriteGeminiSettingsno longer emitstools.allowedin.gemini/settings.jsonand instead writes apolicyPaths: [".gemini/policies"]pointer;WriteGeminiPoliciesgenerates.gemini/policies/agent-layer.tomlwith one[[rule]]block per allowed command (toolName = "run_shell_command",commandPrefix,decision = "allow",priority = 100,allowRedirection = true).allowRedirection = truepreserves the previoustools.allowedbehavior for headless workflows that pipe output (e.g.,git ... > file). Resolves the Gemini CLI deprecation warning. al upgradenow runsal syncautomatically on success so retired projection paths and freshly-introduced templates are reconciled without a manual follow-up. Sync warnings surface on stderr; sync failures are wrapped (upgrade applied; sync failed: <err> (run \al sync` to retry)) witherrors.Is` preserved, and the "Upgrade successful." banner is suppressed when sync fails so the failure is unmissable.al upgradeoverwrite prompts now show a compact summary (file path with+N -Mline stats, colorized when output is a terminal) and ask "View the full diff?" (default no) before printing unified diff bodies..agent-layer/tmp/excluded from pre-upgrade snapshots; rollback does not restore tmp content. Interactive bulk-delete prompt is scoped to non-tmp content; a separate grouped prompt handles tmp unknowns. Non-interactive deletion requires--apply-tmp-deletions;--apply-deletionsalone never touches tmp.config.tomlinstall seed no longer includes inline MCP server entries; the[mcp]section now points toal wizardfor server configuration. Existing repos are unaffected.- Stale
.claude/skills/and.gemini/skills/directories flagged for cleanup during upgrade readiness when those agents are disabled.
Fixed
.mcp.jsonno longer omits themcpServerskey when no servers are configured.- Rollback no longer silently wipes
.agent-layer/tmp/content that was excluded from the snapshot. - Grouped tmp-unknowns deletion fallback fixed when
DeleteUnknownTmpAllFuncis not wired inPromptFuncs. - Env preview redaction edge cases in
al wizardhardened. - Doctor and wizard previews hardened for additional edge cases.
Removed
tools.allowedfield from generated.gemini/settings.json. The nextal syncrewrites the file in the new shape, removing the deprecated key.- Per-client skill directories (
.codex/skills/,.gemini/skills/,.agent/skills/,.vscode/prompts/,.github/skills/) retired;al synccleans these paths and writes to.agents/skills/instead.
v0.9.2 - 2026-03-21
Adds GitHub Copilot CLI as a supported agent client, introduces context files for plan/task artifacts, supports max reasoning effort for Claude Opus, and consolidates internal abstractions for cleaner dependency injection. Instructions and skills are improved for better autonomy and tradeoff handling.
Added
- GitHub Copilot CLI integration: new
al copilotcommand, sync support, config fields ([agents.copilot_cli]), wizard catalog entries, doctor checks, and v0.9.2 migration manifest. Stale Copilot artifacts (.copilot/mcp-config.json, managed skill dirs under.github/skills/) are cleaned when the agent is disabled. - Context file (
.context.md) for plan/task artifact system. Captures key file paths, current state, constraints, and an entry point so implementing agents can orient immediately without re-discovering what the planner found. Produced byplan-work(Phase 3b), consumed byimplement-plan,review-plan,verify-against-plan, and other plan-aware skills. maxas a validreasoning_effortvalue for Claude Opus models. Since Claude Code only supportsmaxas a session-scoped CLI flag, all effort values are now passed via--effortandmaxis excluded fromsettings.jsonsync.- Memory hygiene improvements in instruction and doc templates: "What NOT to store" section in
02_memory.md, character-budget awareness rule (~8k chars / ~2k tokens per file), completed-phase archival guidance inROADMAP.mdtemplate, and entry-ID placeholder update from "abcdef" to "short-slug". - Explicit "Upgrade successful." message when
al upgradecompletes, resolving ambiguous output on no-op completions. - Nil guard for
sys.HTTPClient()indownloadHTTPClientWithSystem, falling back todefaultHTTPClientwhen the System implementation returns nil. INSTRUCTION-DESIGN.mdinternal reference document for instruction authoring principles.
Changed
--effortCLI flag now respectsagent_specific.effortLeveloverride: when the override is set, the managed--effortarg is skipped so the user's setting takes precedence.- Model catalogs updated: added
gemini-3.1-flash-lite,opus[1m],gpt-5.4; removed deprecatedgemini-2.0-*,gpt-5/5.1-*,claude-sonnet-4.5. - Instruction quality improvements: removed rules that duplicate baseline model behavior, strengthened tradeoff protocol to require at least two options with pros/cons, added memory pruning rule for DECISIONS.md and CONTEXT.md.
audit-documentationandaudit-testsskills rewritten to fix autonomously with human checkpoints for genuine tradeoffs instead of dual report-only/fix-mode pattern.audit-testsnow autonomously deletes rubber-stamp tests, consolidates duplicates, and combats agent-caused test bloat. All 22 skills receive a tradeoff checkpoint for standalone distribution.ship-prskill fixes two edge cases: on a non-default branch with no uncommitted changes, proceeds to create the PR; on the default branch with uncommitted changes, creates a new branch before committing.- Dispatch System interface expanded: replaced package-level mutable function stubs (
osStat,osChmod,osRename,lockFileFn,flockFn,dispatchSleep,httpClient, etc.) with methods on the System interface for proper dependency injection. - Duplicate abstractions consolidated: approval mode constants unified into
config.ApprovalMode*, agent-enabled helpers unified intoconfig.IsAgentEnabled. - Skills docs page restructured: orchestrator/primary/supporting tiers with recommended workflow section, separated universal skill standard from Agent Layer-specific features.
- Gitignore template updated to include
open-vscode.shand compiledalbinary.
Fixed
--effortflag no longer shadows user'sagent_specific.effortLeveloverride in Claude Code.ship-prno longer stalls on a non-default branch with no uncommitted changes and no longer tries to commit on the default branch without creating a feature branch first.- Nil panic prevented when
System.HTTPClient()returns nil in download paths. - Security: Updated
github.com/modelcontextprotocol/go-sdkfrom v1.4.0 to v1.4.1 to fix improper handling of null Unicode character when parsing JSON (high severity).
Improved
- Expanded automated test coverage across Copilot CLI sync, dispatch System interface, model catalogs, gitignore templates, effort flag paths, and instruction template assertions.
v0.9.1 - 2026-03-07
Overhauls the built-in skill library from 10 to 22 structured, workflow-driven skills and introduces a user-managed conventions file so you can tailor project-specific rules without losing them on upgrade. Instructions are reordered, deduplicated, and compressed for better agent compliance.
Added
- New user-managed
04_conventions.mdinstruction template for project-specific conventions (architecture, code quality, data safety, time/data, environment). Seeded onal init, never overwritten onal upgrade; future convention updates delivered viaappend_to_filemigrations with duplicate detection. - New
append_to_filemigration kind for delivering content to user-managed files without overwriting edits. Supports duplicate-detection via match string, automatic file creation, and atomic writes. - New
delete_filemigration operations for removing deprecated skill directories during upgrade. - 17 new built-in skills following a normalized workflow-driven structure with explicit phases, global constraints, guardrails, and human checkpoints:
address-pr-comments,audit-and-fix-uncommitted-changes,audit-memory,audit-tests,complete-current-phase,debug-issue,fix-ci,implement-plan,improve-codebase,plan-work,repair-checks,resolve-findings,review-scope,schedule-backlog,ship-pr,simplify-code,verify-against-plan. - Site documentation page for built-in skills (
site/docs/skills.mdx) covering the full 22-skill library organized by category with usage examples and customization guidance. - Site documentation page for evidence-based skill design (
site/pages/skill-design.mdx) with 5 core design principles and 18 academic/industry citations. - Internal skill authoring reference (
docs/SKILL-DESIGN.md) and audit workflow specification (docs/SKILL-AUDIT.md).
Changed
- Instruction files reordered for primacy effect:
02_rules.md→00_rules.md,00_base.md→01_base.md,01_memory.md→02_memory.md. Hard constraints now load first to improve model compliance.al upgrademigrates existing repos viarename_fileoperations. - Cross-file instruction duplicates removed: 6 items that appeared in multiple instruction files consolidated to a single canonical location, reducing ~57 instructions to ~50.
- Verbose instruction sections compressed (~50% fewer tokens in Critical Protocol, Workflow & Safety, and Tools sections) without removing guidance.
- UTC-only internals and No system Python rules moved from
02_rules.mdto04_conventions.mdas project-specific conventions (delivered to existing users viaappend_to_filemigrations). - 5 existing built-in skills restructured to normalized workflow pattern:
audit-documentation,boost-coverage,finish-task,fix-issues,review-plan. - Decision hygiene guidance updated: superseded decisions should be replaced (not accumulated), and entries that become self-evident from the codebase should be removed.
- Skill loader error message for directories missing a skill file shortened from "missing SKILL.md or skill.md" to "has no SKILL.md".
- Site docs sidebar positions updated to accommodate new Skills page; upgrade-checklist shell examples consolidated.
Removed
- 5 built-in skills replaced by normalized workflow equivalents:
cleanup-code(→simplify-code),continue-roadmap(→complete-current-phase),find-issues(→resolve-findings),fix-tests(→repair-checks),update-roadmap(→schedule-backlog). Migration manifest deletes these (plusmechanical-cleanup) from user directories during upgrade.
Improved
- Expanded automated test coverage for user-owned instruction files (seed-on-init, no-overwrite-on-upgrade, excluded-from-diffs),
append_to_filemigration paths (apply, no-op, file creation, rollback), normalized workflow skill structure validation, artifact naming conventions, and skill deletion migration scenarios.
v0.9.0 - 2026-03-01
Added
- Added a reusable
internal/skillvalidatorpackage with parse/validate separation and deterministic findings for agentskills.io-aligned skill validation. - Added
al doctorskills diagnostics for standards checks (unknown frontmatter keys, name/path mismatches, and non-canonical directory filenames such asskill.md). - Added release manifests for
v0.9.0:internal/templates/migrations/0.9.0.jsonandinternal/templates/manifests/0.9.0.json. - Added
al doctorcheck for stale flat-format skill files (.mdat skills root) with guidance to runal upgrade. - Added
CONTEXT.mdmemory file template for general-purpose project context, domain concepts, naming conventions, and lessons learned. - Added data-driven breaking-change display: migration manifests now carry
breaking,breaking_notice, andbreaking_detailsfields, and the upgrade report renders them generically instead of hardcoding per-kind display logic. - Added yellow highlighting for readiness warnings, file-removal counts, and review-needed items in upgrade plan and upgrade output for improved scanability.
- Upgrade snapshot rollback now accepts snapshots in
createdstatus, enabling recovery from interrupted upgrades that failed before reachingappliedstatus.
Changed
- Renamed legacy "slash command" source and output terminology to "skills" across config, sync pipelines, templates, and docs.
- Canonicalized source layout to
.agent-layer/skills/, with migrations that rename legacy.agent-layer/slash-commands/and embedded skill template paths. - Breaking: Flat-format skills (
<name>.md) are no longer supported by the skill loader. All skills must use directory format (<name>/SKILL.md).al upgrademigrates both built-in and user-authored skills automatically via a singlemigrate_skills_formatoperation with pre-flight conflict detection and user confirmation. - Skill frontmatter parsing/generation now uses YAML (
go.yaml.in/yaml/v3) with support forname,description,license,compatibility,metadata, andallowed-tools, while keeping unknown fields parse-tolerant for portability. - Increased skill parser/validator single-line scanner caps to
8 MiBto reduce token-limit failures on large single-line skill content. - Documentation now explicitly states that missing or empty skill
descriptionis load-enforced (fail-loud), while missingnameremains backward-compatible with doctor warnings. - Skills migration user-facing copy updated to "Slash-commands renamed to skills" with data-driven breaking-change notices sourced from the migration manifest.
- Unknown-file scanning now covers both
.agent-layer/anddocs/agent-layer/, with a fresh post-migration re-scan so the unknown-file prompt reflects actual post-migration state instead of stale pre-migration paths. - Migration-covered diff suppression now uses ancestor-directory matching, so migrations that own an entire directory (e.g., skills format migration) suppress noisy per-file template diffs in plan output.
- Git safety instruction now clarifies that commit/push authorization applies only to the specific request and does not carry forward.
Fixed
al doctorlenient-config fallback now best-effort loads skills, preventing false "No skills configured" results when strict config validation fails.- Skill name handling is now Unicode NFKC-aware across loading and validation paths, preventing false duplicates/mismatches for normalization-equivalent names.
- Skill metadata and text limits now use rune counts (not bytes), and validation now rejects empty names and non-ASCII digit forms in slug normalization.
- Directory-format loading now accepts lowercase
skill.mdas a compatibility fallback while preserving canonicalSKILL.mdprecedence.
Removed
- Removed
docs/agent-layer/SKILLS_WORKFLOWS.md; workflow guidance is now provided by individual skill sources.
Improved
- Expanded automated coverage across skill loading/validation, upgrade migrations, prompt generation, install ownership/readiness checks, and docs surfaces touched by the skills-standard migration.
- Updated default embedded skills to canonical agentskills directory format (
skills/<name>/SKILL.md) and aligned memory/workflow docs for Phase 15 completion.
v0.8.8 - 2026-02-25
Added
- Added embedded upgrade migration manifest support for
v0.8.8to canonicalize the Claude VS Code agent key fromagents.claude-vscode.enabledtoagents.claude_vscode.enabledand enforce a default for the canonical key. - Expanded branch-coverage suites across upgrade/install, dispatch, wizard PTY interactions, and command paths to harden release confidence.
Changed
- Canonical config/docs naming now uses
[agents.claude_vscode](snake_case). Legacy[agents.claude-vscode]remains accepted at load time and is migrated during upgrade. - Release and upgrade-doc validation checks are stricter, including stronger release workflow/docs contract assertions and stable-tag publishing guardrails.
cmd/publish-siterelease version-retention and versioned-doc pruning behavior is more robust for deterministic stable release publication.
Fixed
- Made dispatch cache sync-error coverage deterministic by injecting sync failures in tests instead of relying on platform-specific
/dev/nullbehavior. - Aligned upgrade/readiness messaging and docs references to the canonical
claude_vscodekey to avoid mixed-key guidance.
Improved
- Removed obsolete Claude-specific GitHub workflow files in favor of the current release/verification workflow set.
- Updated README and site docs for key-name consistency and release guidance clarity.
v0.8.7 - 2026-02-24
Added
al <client>commands now support--quiet/-qfor one-off quiet runs that suppress Agent Layer informational output while preserving client output and error exit behavior.- Added end-to-end coverage for quiet Claude runs to ensure
al claude --quietemits no Agent Layer output and still launches correctly. - Wizard back-navigation support: pressing
Escnow moves to the previous step, with explicit first-step exit confirmation and deterministic state rollback behavior for partial selections. - Wizard
Ctrl+Cnow exits immediately without saving, distinct fromEsc(back). Both keys are shown as hints in the bottom navigation bar (esc back • ctrl+c exit). - Config guardrail test for required fields: automated enforcement now checks that newly required config fields have matching
config_set_defaultmigration coverage (with explicit legacy baseline allowlist). - Claude reasoning-effort support in wizard/config/sync paths (
low|medium|high), including projection into.claude/settings.jsonaseffortLevel.
Changed
warnings.noise_modenow supportsquietin addition todefaultandreduce.- Quiet handling is now applied consistently across dispatch and client launch paths, including argument forwarding and no-sync execution.
- Wizard-managed
config.tomlwrites now use an explicit preferred section order policy (approvals, enabled agents,mcp,warnings) instead of implicitly coupling ordering to template parse order. - Upgrade diff output is now colorized in interactive terminals for better scanability (adds/removes/hunks), with plain-text fallback preserved for non-interactive and no-color environments.
- Wizard profile apply flow now warns when replacing an existing TOML-corrupt
.agent-layer/config.toml.
Fixed
al syncwarning-only outcomes in quiet mode now preserve non-zero exit behavior without printing warning text.- Quiet-mode behavior now avoids leaking dispatch/update-check banners when quiet is enabled via flag or config.
- Prevented hidden behavior drift in multiline TOML patching by refactoring duplicated state tracking into a shared iterator with regression coverage across call sites.
- Gemini
reasoning_effortis now rejected explicitly with a clear validation error instead of allowing ambiguous/unsupported behavior. - Claude reasoning-effort validation now fails loudly for invalid option values and unsupported model selections.
Improved
- Documentation and default config comments now describe quiet-mode behavior and its interaction with
al doctor(which always prints warnings). - Validation and warning messaging now includes
quietas a first-class supported noise mode. - Expanded test coverage for wizard back-navigation state transitions, profile corruption warning paths, reasoning-effort capability validation, Claude sync projection behavior, and upgrade diff color/no-color rendering.
- Added PTY integration tests for wizard Esc/Ctrl+C keystroke classification, validating the full chain from raw terminal bytes through bubbletea to error classification.
- Updated project memory/docs (
ISSUES.md,BACKLOG.md,ROADMAP.md,DECISIONS.md,README.md) to reflect completed sprint scope and release-facing behavior.
v0.8.6 - 2026-02-23
Added
al wizardnow prompts to enable per-repo Claude settings and caches isolation (local_config_dir) when Claude or Claude VS Code is enabled. Default isfalse(shared global config); selectingtruesetsCLAUDE_CONFIG_DIRto a repo-local directory for separate settings and caches per repository.
Fixed
.gitignoretemplate inline comments on/.claude/and/.claude-config/patterns were treated by Git as part of the literal pattern, causing both directories to not be gitignored. Comments moved to their own lines. Affected users (v0.8.5 installs): runal upgradeoral syncto pick up the corrected template.
Improved
- Per-repo isolation is now documented as a core feature in the README comparison table, key properties, and a dedicated Per-repo credential isolation section in the site concepts page (Codex auth isolation plus Claude settings and caches isolation; Claude auth remains shared due to an upstream limitation).
v0.8.5 - 2026-02-23
Added
- Optional agent-specific passthrough configuration for Claude and Codex via
agents.claude.agent_specificandagents.codex.agent_specific. - Optional
agents.claude.local_config_dirsupport for repo-local Claude config isolation (.claude-config).al vscodesetsCLAUDE_CONFIG_DIRonly when bothlocal_config_dir = trueandagents.claude-vscode.enabled = true. al upgrade rollback --listsupport to inspect available snapshot IDs and statuses before executing rollback.al syncnow auto-adds the repository root to~/.gemini/trustedFolders.jsonwhen Gemini is enabled so Gemini CLI reliably loads project-level.gemini/settings.json. If this write fails, sync still succeeds and emits a non-fatal warning with manual remediation guidance.
Changed
- Agent-specific passthrough keys intentionally override Agent Layer-managed keys when they collide, with sync warnings to keep overrides explicit.
al vscodenow clearsCLAUDE_CONFIG_DIRonly when it points at the repo-local.claude-config; user-defined non-repo values are preserved.- Codex sync now writes
agents.codex.agent_specifickeys before managed MCP tables so top-level overrides remain at the TOML root.
Fixed
- Config parsing now rejects unrecognized keys during strict decode instead of silently ignoring them, with actionable validation guidance in the returned error.
.envparsing now correctly handles quoted values, escaped newline/carriage-return sequences, and invalid trailing characters after quoted values.- MCP tool-name collision warnings are deterministic: warning subjects and per-tool server lists are sorted for stable output.
- Upgrade
config_set_defaultprompts no longer mark one choice as "recommended"; migration manifest values are still pre-selected but users must make an explicit choice. al upgradenow accepts zero-byte snapshot file entries, fixing failures where unknown empty files previously producedrequires content_base64errors.al geminino longer fails MCP discovery for the internalagent-layerserver when PATHalis a non-runnable repo-pin shim. Prompt-server command resolution now prefers local source execution (go run <repo>/cmd/al mcp-prompts) when available,al mcp-promptsbypasses repo-pin dispatch, and prompt-server source roots are validated as the Agent Layer module.
Improved
- Expanded automated coverage for root/upgrade command paths, Gemini trust flows, upgrade-readiness helpers, warning policy branches, prompt-server root resolution, dispatch behavior, and codex/claude agent-specific config rendering.
- Added e2e coverage for upgrade flows that include empty unknown files and for wizard MCP sanitization behavior when profile defaults disable an injected server block.
- Website documentation now includes
al upgrade rollback --listguidance, Gemini trusted-folder remediation notes, and expanded agent-specific and repo-local Claude configuration guidance.
v0.8.4 - 2026-02-20
Fixed
- Version dispatch no longer prints the version-source diagnostic twice when a pinned or environment-overridden version dispatches to a cached binary. The diagnostic now prints only from the binary that actually runs the command.
Changed
- Config validation now silently strips transport-incompatible MCP server fields instead of rejecting the config with an error. For example,
headerson a stdio server orcommand/argson an HTTP server are removed during validation rather than causing a load failure. This makes configs more resilient to leftover fields from transport changes or manual editing.
Improved
al wizardconfig patching now removes dotted sub-key lines (e.g.,headers.Authorization = "Bearer ...") when stripping a parent key likeheaders. Previously, only inline-table syntax (headers = { ... }) was handled.- Scenario-based end-to-end test framework with 26 scenarios and 436 assertions replaces the previous monolithic e2e script. Covers fresh install, wizard profiles, upgrade paths, error propagation, agent launch, and rollback workflows with mock agent binaries.
v0.8.3 - 2026-02-19
Fixed
al doctorlenient config fallback now injects built-in environment variables (e.g.,AL_REPO_ROOT), fixing false "missing environment variables" warnings for MCP servers likefilesystemthat reference${AL_REPO_ROOT}in their args.al wizardnow sanitizes transport-incompatible MCP server fields during config patching. For example, leftoverheaderson a stdio server or leftovercommand/argson an HTTP server are automatically removed. Previously, the wizard would complete successfully butal syncwould fail with a validation error, creating a circular "run wizard to fix" loop.
v0.8.2 - 2026-02-18
Added
- Migration manifest chaining:
al upgradenow loads all intermediate migration manifests between the source and target versions during multi-version jumps. Users upgrading from 0.8.0 to 0.8.2 will receive migrations introduced in intermediate releases. - Config resilience:
al wizard,al doctor, andal upgradenow use lenient config parsing so they always work even on broken or incomplete configs. Runtime commands remain strict with actionable guidance.
Changed
- The
agents.claude-vscode.enabledconfig migration has been moved from the v0.8.1 manifest to v0.8.2. This ensures all users (including those who installed v0.8.1 before the migration was added) receive the prompt during upgrade.
Fixed
- Users jumping multiple versions (e.g., 0.8.0 to 0.8.2) no longer miss intermediate migration operations.
Removed
- Slash command
auto-approvefrontmatter. Approval permissions are controlled entirely byapprovals.mode.
Improved
- Slash command frontmatter now rejects unrecognized keys with a clear error, catching typos and unsupported fields early.
v0.8.1 - 2026-02-18
Added
[agents.claude-vscode]config section for Claude Code VS Code Extension support.al vscodeis the single command for launching VS Code with both Codex and Claude extension settings based on which agents are enabled.approvals.mode = "yolo"for maximum agent autonomy: skips all permission prompts (Claude--dangerously-skip-permissions, Gemini--approval-mode=yolo, Codexapproval_policy=never+sandbox_mode=danger-full-access, VS Codechat.tools.global.autoApprove). Intended for sandboxed/ephemeral environments.- Slash command
auto-approvefrontmatter:auto-approve: trueauto-approves MCP prompt retrieval for that skill in Claude clients. It does not auto-approve agent actions after reading the prompt; those remain governed byapprovals.mode. - Upgrade readiness checks now detect stale disabled-agent artifacts for
.claude/settings.json.
Changed
al vscodenow launches when either[agents.vscode]or[agents.claude-vscode]is enabled inconfig.toml, unifying both extensions under a single launch command.CODEX_HOMEis now cleared from the VS Code process environment when[agents.vscode]is disabled, preventing stale Codex configuration leakage when only Claude VS Code is enabled.- Release process now includes a preflight gate (
make release-preflight RELEASE_TAG=vX.Y.Z) that validates upgrade-contract documentation before tagging.
Fixed
al vscodeno longer appends.when pass-through arguments include a positional path or file argument. (#51)- Sync warning exit behavior restored: non-suppressible warnings correctly propagate exit status regardless of
noise_modesetting.
v0.8.0 - 2026-02-16
Added
- New upgrade command surface centered on
al upgrade:al upgrade plan(dry-run preview),al upgrade rollback <snapshot-id>(manual restore),al upgrade prefetch --version X.Y.Z(cache warm-up), andal upgrade repair-gitignore-block(managed block repair). al upgrade plannow produces plain-language categorized upgrade previews with readiness checks and line-level diff previews (default 40 lines per file, configurable via--diff-lines).- Upgrade planning ownership inference is now deterministic and offline using committed release manifests (
internal/templates/manifests/*.json) plus repo baseline state (.agent-layer/state/managed-baseline.json). al upgradenow creates managed-file snapshots under.agent-layer/state/upgrade-snapshots/and automatically rolls back transactional changes when an upgrade step fails.- Embedded per-release migration engine:
al upgradeexecutes migration manifests (internal/templates/migrations/<target>.json) before template writes and emits deterministic migration reports. al wizardnow supports non-interactive profile mode (--profile, optional--yes) and backup cleanup (--cleanup-backups).- Warning noise control added via
warnings.noise_mode(defaultorreduce) to reduce non-critical suppressible warning output when desired.
Changed
- Breaking:
al initis now one-time scaffolding only. If.agent-layer/already exists,al initerrors and directs users toal upgrade plan+al upgrade. - Breaking:
al upgradenon-interactive execution now requires--yesplus explicit apply flags (--apply-managed-updates,--apply-memory-updates,--apply-deletions) to make mutation intent explicit. .agent-layer/.envand.agent-layer/config.tomlare now strictly user-owned: seeded only when missing and never overwritten by init/upgrade operations..agent-layer/.gitignoreis treated as internal agent-owned state: always rewritten from templates and excluded from upgrade plans/diff prompts.- Default MCP server templates now pin concrete tool versions by default, with inline floating/latest opt-in examples for teams that want automatic upstream updates.
- Update-check handling now degrades gracefully on GitHub API rate limits so init/doctor flows continue with actionable warning output.
- Release process now requires generating and committing a per-tag template ownership manifest before tagging (
./scripts/generate-template-manifest.sh --tag vX.Y.Z).
Fixed
al upgrade rollback <snapshot-id>now rejects path separators in snapshot IDs, preventing path traversal attempts during manual rollback resolution.al vscodelaunch preflight now fails fast with explicit guidance when thecodeCLI is missing onPATHor when.vscode/settings.jsonhas a managed-block marker conflict.
Removed
- Breaking:
al init --overwriteandal init --forcehave been removed. Useal upgrade planandal upgradefor upgrades/repairs. - Breaking:
al upgrade --forcehas been removed. Use explicit apply flags (plus--yesfor non-interactive runs) to select mutation categories. - Breaking:
al upgrade plan --jsonhas been removed; text output is now the only supported plan interface.
v0.7.0 - 2026-02-07
Added
- Upgrade contract published at
site/docs/upgrades.mdx: defines upgrade event categories (safe auto,needs review,breaking/manual), sequential compatibility guarantees (N-1toN), release-versioned migration rules, and OS/shell capability matrix. - Release gate validates upgrade documentation for each release tag (
make docs-upgrade-check), ensuring migration table rows exist and placeholder text is replaced when changelog notes breaking changes. al init --version latestresolves the latest GitHub release to a semver pin before writing.agent-layer/al.version.al init --version X.Y.Zvalidates the release exists on GitHub before writing the pin file, failing with a clear "release not found" message instead of writing a pin that 404s on next use.al initauto-recovers from empty or corrupt.agent-layer/al.versionpin files with a warning instead of blocking all commands.- Binary download progress indicator:
ensureCachedBinaryemits "Downloading al vX.Y.Z..." / "Downloaded al vX.Y.Z" to stderr. - Actionable error messages for binary download failures (404 not-found and timeout scenarios).
Changed
- Breaking: Windows support removed. Deleted
al-install.ps1installer, Windows release target,open-vscode.batlauncher, and all Windows-specific code paths in dispatch, cache, exec, and lock packages. Windows was never tested and best-effort support eroded trust. macOS and Linux remain fully supported. al initnow bypasses repo-pin binary dispatch and always executes on the invoking CLI binary, preventing older pinned versions from running upgrade operations.- Launcher template writes refactored for reliability with proper macOS path escaping.
- Codex MCP header projection order corrected.
- CI workflow caches pinned tools in GitHub Actions for faster builds.
- Upgrade contract linked from README, site docs, DEVELOPMENT.md, and RELEASE.md.
Removed
al-install.ps1(Windows PowerShell installer).open-vscode.bat(Windows VS Code launcher).- Windows release targets (
windows/amd64) from build scripts. - Windows-specific dispatch, cache, exec, and lock code paths.
v0.6.1 - 2026-02-06
Added
- CLI argument forwarding:
al <client>now forwards extra arguments to the underlying client. Use--to separate Agent Layer flags from client arguments (e.g.,al claude -- --helporal vscode --no-sync -- --reuse-window). - VS Code launchers are now created during
al initin addition toal sync, so launchers are available immediately after initialization. .gitignoremanaged block is now updated during bothal initandal syncoperations for consistency.
Fixed
AL_SHIM_ACTIVEenvironment variable no longer leaks into VS Code's integrated terminal when launching viaal vscode. Previously, this caused subsequentalcommands in the terminal to fail with "version dispatch already active" errors. (#46)- Wizard now rewrites
config.tomlsections in the template-defined canonical order, preventing section ordering drift after multiple wizard runs.
Changed
- Launcher code moved to
internal/launcherspackage with exportedEnsureGitignorefor cross-package use. - Documentation updated with clearer guidance on gitignore template format, wizard behavior, and troubleshooting MCP server startup on macOS.
v0.6.0 - 2026-02-03
Added
- Documentation website with comprehensive guides covering getting started, concepts (approvals, MCP servers, project memory, version pinning), reference (CLI, configuration, environment variables), and troubleshooting.
- Website publishing pipeline (
cmd/publish-site) with automated deployment in the release workflow. - Playwright MCP server template in default
config.tomlfor browser automation workflows. - Descriptive comments for all default MCP server templates explaining purpose and required credentials.
- Claude Code VS Code Extension added to supported clients table in README.
Changed
- README rewritten with clearer value proposition, comparison table (manual vs Agent Layer), and improved quick start flow.
- Default MCP server examples in README now use generic
example-apiinstead of GitHub-specific config for clarity. - Documentation structure consolidated from nested pages to flat MDX files for better navigation.
v0.5.8 - 2026-01-30
Changed
- Breaking: Environment variables now require
AL_prefix to avoid conflicts with shell environment (e.g.,GITHUB_PERSONAL_ACCESS_TOKEN→AL_GITHUB_PERSONAL_ACCESS_TOKEN). This ensures Agent Layer variables don't override existing environment variables when VS Code terminals inherit the process environment.
Fixed
- VS Code
open-vscode.applauncher now usesosascriptwith a login shell (zsh -l) instead of hardcoded VS Code CLI paths, fixing launch failures when VS Code is installed via Homebrew, in~/Applications, or other non-standard locations. This also fixes MCP server failures where VS Code couldn't findnodebecause Finder-launched apps have a minimal PATH. - All VS Code launchers (
.app,.command,.bat,.desktop) now delegate toal vscodefor loading.agent-layer/.env, ensuring consistent parsing (KEY=VALUE data, not sourced) across platforms. OnlyAL_*variables with non-empty values are loaded, and existing environment variables take precedence—matching the documented behavior foralcommands. - VS Code
.applauncher now shows a descriptive alert when thecodecommand is not found, instead of silently failing. - Linux
.desktoplauncher simplified to delegate to.commandscript for consistent behavior and maintainability.
v0.5.7 - 2026-01-29
Added
- Custom HTTP header support for Codex MCP servers:
bearer_token_env_varforAuthorization: Bearer ${VAR},env_http_headersfor other env-var-sourced headers, andhttp_headersfor static literals. X-MCP-Toolsheader in default GitHub MCP server template for server-side tool filtering, reducing projected tool count.- Detailed per-tool token breakdown in
al doctorMCP schema bloat warnings, showing top contributors by token count. - Documentation for MCP HTTP header projection across all supported clients (
docs/MCP_HEADERS_SUPPORT.md).
Changed
- Default MCP schema token thresholds increased to accommodate larger MCP servers (server: 7500→20000 tokens, total: 10000→30000 tokens).
- Doctor command now shows real-time discovery progress when checking MCP servers.
- Large internal modules (
install,dispatch,config) split into smaller, focused files for maintainability. - golangci-lint upgraded to v2.8.0 with additional linting rules enabled.
v0.5.6 - 2026-01-27
Added
http_transportconfig option for HTTP MCP servers to specify transport mode (streamableorsse).- Three new MCP server templates in default
config.toml:fetch(mcp-server-fetch),ripgrep(mcp-ripgrep), andfilesystem(server-filesystem with repo-scoped access). ${AL_REPO_ROOT}built-in variable for resolving repository root path in MCP server args.- VS Code settings sync now preserves existing user settings and comments using JSONC-aware block insertion instead of overwriting the entire file.
- Memory file templates (
BACKLOG.md,COMMANDS.md,DECISIONS.md,ISSUES.md,ROADMAP.md) now include detailed formatting guidelines and entry templates.
Changed
- MCP projection refactored: new
internal/projection/resolvers.gomodule centralizes server resolution logic, used by both sync and warning checks. - Update-available warning now includes full upgrade instructions for Homebrew, macOS/Linux shell script, and Windows PowerShell.
- Instruction templates consolidated and shortened to reduce token count while preserving key guidelines.
- Terminal detection moved to canonical
internal/terminalpackage withIsInteractive()function. - Default MCP server templates no longer specify
clientsfilter (servers are projected to all clients by default).
Fixed
- MCP server health checks now properly handle HTTP transport timeout scenarios.
v0.5.5 - 2026-01-25
Added
- New
03_tools.mdinstruction template with comprehensive tool usage guidelines: time-sensitive information handling, Context7 documentation lookups, MCP tool constraints, approval workflows, and error handling. - New
fix-testsslash command runs repo-defined checks (lint/format/pre-commit/tests) in a loop, fixing failures until all checks pass or max iterations reached.
Changed
- Temporary artifact location moved from
tmp/agent-layer/runs/to.agent-layer/tmp/runs/, keeping all agent artifacts within.agent-layer/. - Slash command artifact naming standardized across workflows:
.agent-layer/tmp/<workflow>.<run-id>.<type>.mdwithrun-id = YYYYMMDD-HHMMSS-<short-rand>. User path overrides removed for consistency. finish-taskworkflow now delegates tofix-testswhen available before falling back to manual repo-defined commands.- README updated with new artifact naming convention and VS Code reauthentication note for new
CODEX_HOMEenvironments.
v0.5.4 - 2026-01-24
Changed
- Memory file
FEATURES.mdrenamed toBACKLOG.mdto better reflect its purpose (unscheduled user-visible features and tasks vs deferred issues). al init --overwritenow detects and prompts to delete unknown files under.agent-layerthat are not tracked by Agent Layer templates.al init --forcenow deletes unknown files under.agent-layerin addition to overwriting existing files without prompts.- Memory instruction templates improved with clearer formatting rules and entry layouts.
- Slash command templates (
continue-roadmap.md,update-roadmap.md) simplified and clarified. - VS Code launcher paths centralized in
internal/launcherspackage, consumed by sync and install to prevent drift. - Sync package refactored with system abstraction layer for improved test isolation and reliability.
v0.5.3 - 2026-01-24
Changed
- User-facing strings consolidated into
internal/messages/package for consistency and maintainability. - Python release tools (
extract-checksum.py,update-formula.py) replaced with Go implementations ininternal/tools/. - Release test script reorganized into modular components (
scripts/test-release/release_tests.sh,scripts/test-release/tool_tests.sh). - Slash command templates (
find-issues.md,finish-task.md) simplified to reduce duplication with base instructions; formatting rules now delegate to individual memory file templates.
v0.5.2 - 2026-01-24
Added
- Automated Homebrew tap updates: release workflow now opens a PR against
conn-castle/homebrew-tapto update the formula with the new tarball URL and SHA256.
v0.5.1 - 2026-01-23
Added
- Source tarball (
agent-layer-<version>.tar.gz) published with releases for Homebrew formula support.
Changed
- Release scripts now generate and verify the source tarball via
git archive+gzip -n. - Documentation cleanup: simplified release process, corrected
make devdescription.
v0.5.0 - 2026-01-23
Major shift from repo-local binary to globally installed CLI with per-repo version pinning.
Added
- Global CLI installation via Homebrew (
brew install conn-castle/tap/agent-layer), shell script (macOS/Linux), or PowerShell (Windows). al initcommand initializes.agent-layer/anddocs/agent-layer/in any repo.- Per-repo version pinning via
.agent-layer/al.version; global CLI dispatches to the pinned version automatically. - Cached binary downloads with SHA-256 verification; cached binaries stored in
~/.cache/agent-layer/versions/. - Shell completion for bash, zsh, and fish (
al completion <shell>with optional--installflag). - Update checking:
al initandal doctorwarn when a newer release is available. - Linux desktop entry launcher (
.agent-layer/open-vscode.desktop). - E2E test suite (
scripts/test-e2e.sh) and release test script (scripts/test-release.sh). - Environment variables:
AL_CACHE_DIR(override cache location),AL_VERSION(force version),AL_NO_NETWORK(disable downloads).
Changed
- Breaking: Repo-local
./alexecutable replaced with globally installedalCLI. - Breaking:
al installrenamed toal init. - Breaking: Repository moved from
nicholasjconn/agent-layertoconn-castle/agent-layer. - Install script renamed from
agent-layer-install.shtoal-install.sh. al init --overwritenow prompts before each overwrite; use--forceto skip prompts.al init --version <tag>pins the repo to a specific release version.- Commands run from any subdirectory now resolve the repo root automatically.
.agent-layer/.gitignoreadded to ignore launchers, template copies, and backups.
Removed
- Repo-local
./albinary; globalaldispatches to pinned versions as needed. agent-layer-install.sh(replaced byal-install.sh).
v0.4.0 - 2026-01-21
Added
al doctorcommand reports missing secrets, disabled servers, and common misconfigurations.al wizardcommand provides interactive setup for approval modes, agent enablement, model selection, MCP servers, secrets, and warning thresholds.- Configurable warning system with thresholds for instruction token count, MCP server/tool counts, and schema token sizes.
- Antigravity slash commands now generate skills in
.agent/skills/<command>/SKILL.md. - VS Code launchers: macOS
.appbundle (no Terminal window), macOS.commandscript, and Windows.batfile, all withCODEX_HOMEsupport. al install --no-wizardflag skips the post-install wizard prompt.- Atomic file writes across all sync operations prevent partial file corruption.
Changed
al installnow prompts to run the wizard after seeding files (interactive terminals only).- Gitignore patterns use root-anchored paths (
/AGENTS.mdinstead ofAGENTS.md) for precision. - Default Codex reasoning effort changed from
xhightohigh. - Codex config header now warns about potential secrets in generated files.
- Environment variable loading: process environment takes precedence;
.agent-layer/.envfills missing keys only; empty values in.envare ignored. - Improved instruction and slash-command templates.
Fixed
- VS Code launcher now works correctly with proper error messages for missing
codecommand. - MCP configuration for Codex HTTP servers now handles bearer token environment variables correctly.
v0.3.1 - 2026-01-19
Added
- Installer failure output now includes clear, actionable error messages.
Fixed
- Installer checksum verification now handles SHA256SUMS entries with "./" prefixes.
Changed
- Quick start documentation no longer suggests manual install fallback when only
./alis present.
v0.3.0 - 2026-01-18
Complete rewrite in Go for simpler installation and fewer moving parts.
Added
- Single repo-local Go binary (
./al) replaces the Node.js codebase. al installcommand for repository initialization with template seeding.al install --overwriteflag to reset templates to defaults.al synccommand to regenerate client configs without launching.- Support for five clients: Gemini CLI, Claude Code CLI, VS Code/Copilot Chat, Codex CLI, and Antigravity.
- Unified
[[mcp.servers]]configuration inconfig.tomlfor both HTTP and stdio transports. - Approval modes (
all,mcp,commands,none) with per-client projection. ${ENV_VAR}substitution from.agent-layer/.envwith client-specific placeholder syntax preservation.- Internal MCP prompt server for slash command discovery (auto-wired into client configs).
- Golden-file tests for deterministic output validation.
- Managed
.gitignoreblock with customizable template (.agent-layer/gitignore.block).
Changed
- Breaking: Complete rewrite from Node.js to Go.
- Breaking: Configuration moved from
config/agents.jsonto.agent-layer/config.toml(TOML format). - Breaking: MCP servers now configured via
[[mcp.servers]]arrays inconfig.toml. - CLI simplified:
./al <client>always syncs then launches. - Instructions now in
.agent-layer/instructions/(numbered markdown files, lexicographic order). - Slash commands now in
.agent-layer/slash-commands/(one markdown file per command). - Approved commands now in
.agent-layer/commands.allow(one prefix per line). - Project memory standardized in
docs/agent-layer/(ISSUES.md, FEATURES.md, ROADMAP.md, DECISIONS.md, COMMANDS.md).
Removed
- Node.js codebase (
src/lib/*.mjs, test files,package.json). config/agents.jsonand separate MCP server configuration files.- Built-in Tavily MCP server (now configurable as external server in
config.toml).
v0.2.0 - 2026-01-17
Major architectural overhaul moving core logic from shell to Node.js.
Added
- Per-agent opt-in configuration via
config/agents.jsonwith interactive setup prompt. - HTTP transport support for MCP servers.
- Tavily MCP server for web search capabilities.
./al --versionflag with dirty suffix for non-tagged commits.- User config preservation and backup during upgrades.
Changed
- Breaking: CLI entrypoint is now
.agent-layer/agent-layer;./alremains as the launcher wrapper in the parent root. - Root resolution, environment loading, and cleanup moved from shell to Node.js (
src/lib/roots.mjs,src/lib/env.mjs,src/lib/cleanup.mjs). - Test framework migrated from Bats (shell) to Node.js native test runner.
- GitHub MCP server switched to hosted HTTP endpoint with PAT authentication.
- Architecture documentation updated to reflect new layer boundaries.
Removed
- Shell scripts:
al,run.sh,setup.sh,clean.sh,check-updates.sh,open-vscode.command. - Shell-based root resolution:
src/lib/parent-root.sh,src/lib/temp-parent-root.sh.
v0.1.0 - 2026-01-12
Initial release.
Added
- Installer for per-project setup that pins
.agent-layer/to tagged releases, with upgrade, version, and dev-branch options. - Repo-local
./allauncher with sync and environment modes plus local update checks. - Sync pipeline that generates client configs from
.agent-layer/configsources. - MCP prompt server that exposes workflows as prompts.
- Project memory templates and setup/bootstrap helpers.