Docs / Guides / Release notesVIEW .MD
Release notes
Published 04/11/2026 · Updated 07/11/2026
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 graphin a lane uses that lane's own[graph]settings.ade graph --routedraws 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 deciderecords who answered. - A park asks whoever
ade.tomlsays answers, and retries now; a park question names its own id;ade conductparks 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 --askwarns when its text names a card but--cardis missing.- Under
[git] push = "pr", land follows the landed card's PR. ade initon an upgrade says what carries over and what does not, lists kit files you edited in the old kit, and namesade.tomlvalues that are only an old default, printed asade.tomlwrites 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
METafter editing is read as done. - Roles can pass engine-specific args, and OpenCode reviewers run read-only.
ade initinstalls 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 inittells Codex users to accept ADE's hooks once in Codex and reports which it has not trusted yet. When theadeon PATH is not this kit, it says to runade linkso 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 takeretry: NOTE). The generated skill's answer forms come from that list. - Run as root, a first
ade initwriteslane_mode = "auto", since Claude Code refusesbypassPermissionsas root, and warns when an existingade.tomlhas it.
Safer:
- Land stops a lane that changed files outside its card's paths.
- The bash guard judges backtick,
evaland$(...)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 initno 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
rmand 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 statusandade cockpitcount 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 initinstalls an optional flight band for Claude Code (theflight-bandpart, copied into.claude/skills/ade-flight-bandand 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 keepade cockpit --follow.ade cockpitstarts with one line per card of the latest flight: stages passed, under way and not reached, orlanded SHAorparked: 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-landstops the run at land and asks a person, as a[land] askpath does, for that run only.ade card hold CARD REASONholds an existing open card, asade card add --holddoes for a new one; release it with theade decide --answerline it prints.ade card showends with onenext:line of hops: the card's open questions, its latest saved outputs and its branch.ade card addwarns 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 loopandade conductguides tell pilots to run a card in the background besideade wait stagewaits, and to keep the main checkout on trunk while a card flies. ade config --seats(and[report] seats = true, which writes aconfig: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 NAMEpicks it, and[profiles]can select it by glob. [roles.<role>] system_promptnames a repo-relative file added to Claude Code's system prompt. Claude lanes no longer spawn subagents unless the role setssubagents = true.[providers.<engine>] pass_envlists non-secret host variables a lane keeps thoughscrub_envwould drop them; a key or token name is refused at load.- A land question answered
rework: TEXTsends 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 conductends 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,
bypassPermissionsincluded, 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 Codexmodesis now a singledefaultentry. ADE has proven this guard on macOS only. ade initwarns when yourade.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 loopruns 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'sscrub_env. Anade.tomlthat sets its ownscrub_envgets this only if you take the template's line;ade initnames any template entries it lacks. - A claude call with an API key set that writes 1-hour cache is marked
billing_suspectin 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,_TOKENor_SECRET(case-blind), except each engine's own auth variable, such asANTHROPIC_AUTH_TOKENfor claude. - A claude key that is out of credit stops the card as
provider.credit.
Fixes:
ade graphcopes 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 initwrites hooks that name this kit'sadewhen theadefirst 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 WORDlooks up anyade.tomlsetting by word.ade config --rolesshows each role's model and effort for every engine, with where each came from and which engine is active.ade config --probetries each configured role model once, in a throwaway folder.ade loopandade conducttake--model ROLE=ENGINE:MODELand--effort ROLE=LEVEL(repeatable) for one flight, without editingade.toml. Usage rows record the model the provider says it served and the effort passed.- Codex's default model is
gpt-6.1-solin every role. Model ids are passed verbatim, sogpt-6-solis a fixed id, not a "latest" alias. [providers.codex]can setauto_compact_token_limitandcontext_window; when set, Codex lanes are passed them. There is no kit default.ade landrefuses a merge that leavesade budgetover: it puts trunk back, names each over row and its cure, and pushes nothing.ade budgetcounts atest functionsrow against[budgets], andade budget --testsnames tests that went red on two cards where nothing they guard broke.ade rehearse --coveragelists 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-upstops 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 conductrun gets a flight id (f1, f2, ...), shown with its card and calls in the cockpit and telemetry. ade card addprints the co-moves of the paths it names, as the edit brief does.ade initwrites a generated ADE skill and an AGENTS.md "Using ADE" section, so a fresh agent learns ADE unaided. The role block names no model; runade config --rolesfor 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] unitpicks how usage reads:dollars(the default),meterorplan_dollars. The meter model comes from[usage] meter_model, and[usage] planandplan_priceletplan_dollarsconvert 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 itsreads:edges, and any other partial header is reported byade graphinstead of dropped silently. ade handoverlists 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 initsays 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 closecloses 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 statuslists open lane worktrees with their age and whether they are dirty.ade cockpit --followredraws the board live, andade session attach NAME --followwaits for the next run of that session.ade land CARD --catch-upbrings a pushed but unmerged card branch up to date with the remote trunk, whatever[git] pushsays.- Briefs name the file generated from the one you are changing, and
ade card addwarns about a path that matches no tracked file. ade statusshows how many grep notes were followed by a Read of the noted file.- Interactive
codexin the main checkout gets the same grep graph notes as Claude once the hook is trusted, which takes runningcodexthere once (ade initwrites.codex/hooks.json). Codex lanes get none, andade initsays 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 insecret_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 pushsends only the records branch and tags under[git] push = "pr", and lanes leave the records branch toade.ade initwarns when Codex runs in bypass lanes, and when the hooks run a differentadethan the oneinitwrote.
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 --refusalsnow 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 whenade conductstarts 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] asklists paths that land only on a person's answer.[review] engine = "opposite"has the other engine review a lane.[conduct] follow_stopandcaplet a run go on unattended and stop at a spend cap.- Proofs:
ade card add --proofadds a command that land runs on the merged main;ade card showshows it and drafts write it as PROOF lines. ade graph FILEshows 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] forkforks reviews from one warm parent a day.- Claude lanes stream events, so
ade watchshows progress. - Lanes say whether they bill a login or an API key.
- The home screen and a bare
ade decidesay 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_modesets 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.jsonregenerates 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
adequietly.
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 --lanesandade card list --free.
0.1.0 (27/10/2026)#
- First release: portable downloads for Linux, macOS and Windows.