Docs / Guides / Release notesVIEW .MD

Release notes

What each release brings. To upgrade, run ade init --dry-run to see what would change, then ade init in each repository.

0.8.0 (07/11/2026)#

New:

  • After an upgrade, a pilot session hears what changed in ADE since the project's last ade init (kept in .ade/news.md). Lanes do not get it, and it survives compaction for a week.
  • A ruling announces itself the first time a governed file is touched, including when Bash writes it.
  • The first-edit briefing names the project's test units, says when a tool rewrites a file in place, lists headed callers first and scratch last, counts a busy file's callers by folder, and lists living docs before dated records.
  • ade graph in a lane uses that lane's own [graph] settings.
  • ade graph --route draws the conductor's route as a Mermaid flowchart, looping back with the twice rule.
  • Every answer on a card reaches the card's next model, and ade decide records who answered.
  • A park asks whoever ade.toml says answers, and retries now; a park question names its own id; ade conduct parks a land question at once.
  • The outcomes line says who a question was meant for, and land questions no longer say only a person can answer.
  • ade decide --ask warns when its text names a card but --card is missing.
  • Under [git] push = "pr", land follows the landed card's PR.
  • ade init on an upgrade says what carries over and what does not, lists kit files you edited in the old kit, and names ade.toml values that are only an old default, printed as ade.toml writes them. It also says to start the agent from the project folder.
  • The generated ade skill says where things belong and shows each verb's argument shape with good and bad calls.
  • Grep notes count what was acted on, not just what was read.
  • The cockpit flight strip matches the Claude Code flight band. Pilots outside Claude Code, or on Remote Control, get the band in one cockpit terminal.
  • Pilot guidance drops the per-stage background waits.
  • A builder that ends MET after editing is read as done.
  • Roles can pass engine-specific args, and OpenCode reviewers run read-only.
  • ade init installs an OpenCode plugin and a Pi extension, only for projects that use those engines, so they get ADE's hooks too. ADE's hooks now cover PowerShell tools, and Codex gets the full hook set.
  • ade init tells Codex users to accept ADE's hooks once in Codex and reports which it has not trusted yet. When the ade on PATH is not this kit, it says to run ade link so Codex hook commands survive updates.
  • Pi provider lanes run a card from a prompt file, read its JSON usage and run under the OS read guard like OpenCode's; listing seats never writes a Pi prompt file.
  • Every machine-read question checks its answer against one closed list and refuses anything else with exit 2, naming the valid forms (land: land, rework: TEXT, drop; drafted cards take retry: NOTE). The generated skill's answer forms come from that list.
  • Run as root, a first ade init writes lane_mode = "auto", since Claude Code refuses bypassPermissions as root, and warns when an existing ade.toml has it.

Safer:

  • Land stops a lane that changed files outside its card's paths.
  • The bash guard judges backtick, eval and $(...) bodies, including inside quotes.
  • A reviewer's edits never override a not-ready verdict.
  • A huge review prompt stops the card instead of crashing ade conduct.
  • A new file's path warning says what it really reaches.
  • A sandboxed Codex pilot is refused before the lane, with a cure that leads with the plain terminal, and the lane folder's writability is probed first.
  • ade init no longer writes a Codex sandbox table, and uninstall takes back one an earlier init wrote.
  • The bash guard judges PowerShell's delete and write forms like rm and redirection.
  • The test stage fails a lane whose added or changed test file runs no tests.

Fixes:

  • A huge diff is reviewed by summary, and the summary stays under its cap.
  • A review cut off after its verdict line is retried once, and a forked review gets the handover once.
  • The graph keeps files the sandbox will not stat and drops deleted ones.
  • A note's named tests credit only that note.
  • ade status and ade cockpit count only live cards.
  • Closing a card saves and removes its lane.
  • On Windows the cockpit opens its own console reliably.
  • Land's PR check cannot hang.

0.7.0 (04/11/2026)#

New:

  • ade init installs an optional flight band for Claude Code (the flight-band part, copied into .claude/skills/ade-flight-band and git-ignored). It reads ADE's records every three seconds and draws the flying card's five stages above the prompt, with a toast when a card lands or parks. In VS Code and Claude Desktop it also opens a pane. It writes nothing to the transcript, and a Remote Control viewer sees none of it. Codex users keep ade cockpit --follow.
  • ade cockpit starts with one line per card of the latest flight: stages passed, under way and not reached, or landed SHA or parked: reason.
  • ade wait stage CARD STAGE (lane, build, review, test or land) waits for that stage of a card to finish, so each stage can be its own background task. It exits 3 when the stage, or an earlier one, ended without advancing.
  • ade loop CARD --hold-land stops the run at land and asks a person, as a [land] ask path does, for that run only.
  • ade card hold CARD REASON holds an existing open card, as ade card add --hold does for a new one; release it with the ade decide --answer line it prints.
  • ade card show ends with one next: line of hops: the card's open questions, its latest saved outputs and its branch.
  • ade card add warns when a path it names is protected, with the cure when one is configured.
  • A file's briefing names every tool whose header writes: it, and groups the files a tool generates from it on one line.
  • A header's reads: run:PATH (a path or glob) makes the file a caller of what it runs.
  • The ade loop and ade conduct guides tell pilots to run a card in the background beside ade wait stage waits, and to keep the main checkout on trunk while a card flies.
  • ade config --seats (and [report] seats = true, which writes a config: line to each call's lane log) shows per role and engine the argv, env and settings files a call gets, without spending anything.
  • Role profiles: [roles.<role>.profiles.NAME] sets a voice, models and effort for one kind of card; ade card add --profile NAME picks it, and [profiles] can select it by glob.
  • [roles.<role>] system_prompt names a repo-relative file added to Claude Code's system prompt. Claude lanes no longer spawn subagents unless the role sets subagents = true.
  • [providers.<engine>] pass_env lists non-secret host variables a lane keeps though scrub_env would drop them; a key or token name is refused at load.
  • A land question answered rework: TEXT sends the lane back to the builder with TEXT and then asks again; any other answer holds the card.
  • A hold-land question names the card's paths.
  • ade conduct ends with each card's verdict and the stops it retried for it.
  • A card drafted after midday counts its veto window from the next morning.
  • The pilot's brief says a denied read on a secret-like file may come from your own sandbox, not the product.

Safer:

  • Every Codex lane, bypassPermissions included, now runs under the permission profile built from [guards] secrets, which denies reads of those files, turns the network on and lets the lane write its git folders. The template's Codex modes is now a single default entry. ADE has proven this guard on macOS only.
  • ade init warns when your ade.toml's Codex modes for the lane mode lack {deny_reads} (as one from before this change does), and prints the line to set.
  • Only one ade loop runs per card: a second run refuses while the card's lane is in use, and takes over from a run that has died.
  • Claude lanes now also drop a host session's memory stores, thinking budget, MCP settings and cache-TTL variables (CLAUDE_MEMORY_STORES, MAX_THINKING_TOKENS, MCP_*, ENABLE_PROMPT_CACHING_1H, FORCE_PROMPT_CACHING_5M) in the template's scrub_env. An ade.toml that sets its own scrub_env gets this only if you take the template's line; ade init names any template entries it lacks.
  • A claude call with an API key set that writes 1-hour cache is marked billing_suspect in its usage row, with a warning on stderr that points at the run lanes on API credits page: the lane may have inherited a host's plan login instead of billing the key.
  • Lanes never inherit a host variable ending in _KEY, _TOKEN or _SECRET (case-blind), except each engine's own auth variable, such as ANTHROPIC_AUTH_TOKEN for claude.
  • A claude key that is out of credit stops the card as provider.credit.

Fixes:

  • ade graph copes with a sandbox that denies reads of some files: it carries their entries over from the committed graph and says how many. Writing a new graph in that state refuses, so edges are not dropped.
  • When land's catch-up with the remote trunk clashes only in the graph file, the graph is rendered anew instead of the catch-up failing.
  • A lane log that another run moved away mid-call stops the card with a reason instead of a traceback.
  • ADE's output no longer crashes on a console that cannot show a character (such as Windows cp1252); the character prints as ?.
  • The card lock works on Windows: ADE locks a sibling file and leaves the lock data readable.
  • ade init writes hooks that name this kit's ade when the ade first on PATH is a different one.
  • A test-tree helper (such as tests/helpers.py) selects the tests that import it, instead of running alone and finding none.
  • A plan's usage-limit answer stops the card as capacity.

0.6.0 (02/11/2026)#

New:

  • Each role can have its own reasoning effort per engine, set beside its models. A Codex lane never inherits your own Codex effort: a role with none gets [providers.codex] default_effort, which the template sets to medium.
  • ade config WORD looks up any ade.toml setting by word. ade config --roles shows each role's model and effort for every engine, with where each came from and which engine is active. ade config --probe tries each configured role model once, in a throwaway folder.
  • ade loop and ade conduct take --model ROLE=ENGINE:MODEL and --effort ROLE=LEVEL (repeatable) for one flight, without editing ade.toml. Usage rows record the model the provider says it served and the effort passed.
  • Codex's default model is gpt-6.1-sol in every role. Model ids are passed verbatim, so gpt-6-sol is a fixed id, not a "latest" alias.
  • [providers.codex] can set auto_compact_token_limit and context_window; when set, Codex lanes are passed them. There is no kit default.
  • ade land refuses a merge that leaves ade budget over: it puts trunk back, names each over row and its cure, and pushes nothing.
  • ade budget counts a test functions row against [budgets], and ade budget --tests names tests that went red on two cards where nothing they guard broke.
  • ade rehearse --coverage lists every verb and parts switch that no scenario runs; land notes it and never blocks on it.
  • With [tests] fail_proof = true (off in the template), land puts the card's changed code files back from trunk, reruns the card's changed tests, and records whether they fail without the change.
  • Builders are told to keep going until the done line is met, and are told when the test cap is full so they replace a test instead of landing code untested.
  • ade land CARD --catch-up stops and names the card when another pushed card branch is stacked on this one, so the lower branch is not taken out of the stack.
  • Every ade conduct run gets a flight id (f1, f2, ...), shown with its card and calls in the cockpit and telemetry.
  • ade card add prints the co-moves of the paths it names, as the edit brief does.
  • ade init writes a generated ADE skill and an AGENTS.md "Using ADE" section, so a fresh agent learns ADE unaided. The role block names no model; run ade config --roles for those.
  • The graph reads Go, Rust, Java/Kotlin, C# and C/C++ as well as Python and TypeScript/JavaScript, and the template's test globs match those languages' usual test files.
  • [usage] unit picks how usage reads: dollars (the default), meter or plan_dollars. The meter model comes from [usage] meter_model, and [usage] plan and plan_price let plan_dollars convert shares into your plan's weekly price.
  • Claude's shares are an estimate, labelled as lanes only, and sit beside the real week reading when one exists.
  • Codex's shares are measured from the jumps in its own meter.
  • ade card paths ID --path P (repeatable) replaces an open card's paths.

Fixes:

  • Graph header paths keep spaces and +: entries split on commas, and a path may be backquoted.
  • A header missing only writes: still makes its reads: edges, and any other partial header is reported by ade graph instead of dropped silently.
  • ade handover lists only open cards under "Open cards".
  • When land's catch-up with the remote trunk fails, it says which: the conflicting files, or the red test command's last line.
  • A park question of a card that has landed or been closed no longer lingers in ade decide, the status line, the cockpit or briefings.

Removed:

  • ade observe. Old observation rows still read without error.

0.5.0 (02/11/2026)#

New:

  • opencode lanes run inside an OS read guard that hides your [guards] secrets files, and the template turns it on by default. The guard runs on macOS, and on Linux only when bwrap is installed; ade init says when there is none.
  • Rulings can be imported once from a file, retired with a recorded reason (and the ruling that replaces them), and read in full with ade decide --show ID. An answer to a retired ruling is refused.
  • Briefs and the handover list the rulings that govern the paths at hand first, one line each. Builders and reviewers get your project's voice for their role.
  • ade card close closes a card with a recorded reason, and a builder can close a card whose done line is already met.
  • A card can be added held, with its reason and what releases it, and the cockpit shows it as held.
  • ade status lists open lane worktrees with their age and whether they are dirty.
  • ade cockpit --follow redraws the board live, and ade session attach NAME --follow waits for the next run of that session.
  • ade land CARD --catch-up brings a pushed but unmerged card branch up to date with the remote trunk, whatever [git] push says.
  • Briefs name the file generated from the one you are changing, and ade card add warns about a path that matches no tracked file.
  • ade status shows how many grep notes were followed by a Read of the noted file.
  • Interactive codex in the main checkout gets the same grep graph notes as Claude once the hook is trusted, which takes running codex there once (ade init writes .codex/hooks.json). Codex lanes get none, and ade init says so. ADE never passes the hook-trust bypass flag.

Safer:

  • Claude and Codex lanes deny reads of your [guards] secrets files, except the ones you list in secret_ok, which stay readable in Claude lanes (Codex lanes deny them too). Windows drive and UNC paths count as absolute.
  • A card whose id was renumbered on another machine is never resolved to the wrong card without saying so, and a renumbered card is found again by its title, paths and done line.
  • A silent engine stops at a stall bound well before its timeout, and a timeout kills the engine's whole process group.
  • opencode lanes stop at a 15-minute stall bound, now that its json output is known to stream.
  • ade push sends only the records branch and tags under [git] push = "pr", and lanes leave the records branch to ade.
  • ade init warns when Codex runs in bypass lanes, and when the hooks run a different ade than the one init wrote.

Fixes:

  • On Windows, an engine call's leftover processes end through a Job Object, and a dropped card's patch applies.
  • A landing cut off before its push ships on the next ade land, and a landed card is re-shipped only while the remote trunk lacks it.
  • A pull-request landing deletes remote card branches that the trunk already contains.
  • A review patch that does not apply is kept whole, patches in Codex's own form apply, and a review patch never moves the generated graph.
  • Review edits made in the lane regenerate the graph.
  • The test stage regenerates a stale graph instead of stopping.
  • An open question without a deadline no longer crashes its readers.
  • The week meter says API key instead of not reported.
  • ade budget --refusals now also counts refusals that were only printed before: a refused records push while opening or catching up a pull request, and a lane whose session name is already taken when ade conduct starts it. Refusal rows now go on the records branch, so the counts survive a lost state folder and add up across machines; a refusal that cannot be backed up still blocks as before.

0.4.0 (31/10/2026)#

New (each is off until you set it in ade.toml or ask for it):

  • [land] ask lists paths that land only on a person's answer.
  • [review] engine = "opposite" has the other engine review a lane.
  • [conduct] follow_stop and cap let a run go on unattended and stop at a spend cap.
  • Proofs: ade card add --proof adds a command that land runs on the merged main; ade card show shows it and drafts write it as PROOF lines.
  • ade graph FILE shows what the graph knows about one file.
  • Test commands may use {paths}, {base} and {tip}.
  • [graph] blessed helper folders are reused by the briefing and the builder.
  • [review] fork forks reviews from one warm parent a day.
  • Claude lanes stream events, so ade watch shows progress.
  • Lanes say whether they bill a login or an API key.
  • The home screen and a bare ade decide say what to do next.

Safer:

  • Land stops a lane that changed a protected path, whatever wrote it, or its own [tests] table.
  • The bash guard refuses deleting the trunk or tags, and reads each part of a chained command.
  • lane_mode sets Codex's sandbox too.
  • A builder must say DONE, or the card stops.
  • A test changed without its code, and literal pins, are noted at land.
  • Usage rows stay on the machine.

Fixes:

  • An engine timeout or capacity answer is a retried stop, not a traceback.
  • A landing whose only conflict is graph.json regenerates it.
  • A landing cut off after its merge finishes on rerun.
  • Header reads and writes may name globs.
  • A test that names a file by path reaches it.
  • A hanging test fails red, and a failed stop names the failing tests.
  • Review patches with miscounted hunks apply.
  • A closed pipe ends ade quietly.

0.3.0 (30/10/2026)#

  • Two lanes at once.
  • ade card draft.
  • [git] push = "pr", with remote catch-up.
  • ade digest.
  • ade conduct --follow.
  • Park questions.
  • First-run setup.
  • The opencode engine.
  • The neighbour check and the draft rehearsal.

0.2.0 (28/10/2026)#

  • ade conduct --lanes and ade card list --free.

0.1.0 (27/10/2026)#

  • First release: portable downloads for Linux, macOS and Windows.