Agent Layer publishes full release notes and artifacts on GitHub Releases. The canonical 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 for the upgrade contract).
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.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.