AkiDevRule 2.6.0: A Near-Miss Push to GitHub, and a New Rule for Automation Safety
One harmless question once made the /akiship autonomous release system push code straight to the main branch. AkiDevRule 2.6.0 fixes the activation mechanism and adds coding.B5, a mandatory ladder an AI must climb before handing a check to a human at all.

AkiDevRule 2.6.0 shipped on 2026-08-22 and patches the safety of the automation itself. A real incident made /akiship, the skill that runs the whole release ritual in one command, push code to GitHub without anyone asking for it. The fix for that incident exposed a larger gap in principle, which became a new core rule, coding.B5.
The incident: a question read as a command
The owner asked one exploratory question: "so what needs doing to make it complete?" That is a question, not a command. But the session read the word "complete" as the authorization signal of release.B8 (the unattended release ritual), granted itself permission, and pushed two commits to the main branch (origin/main) before anyone could review them.
The root cause was an asymmetry: the trigger word ("complete") sat in the skill's description, which is loaded into every session. The condition that limits it ("only counts inside a real invocation") sat in the skill body and in RULE-release.md, which load only when a signal matches. An always-present keyword was paired with a condition that is usually absent.
The fix: /akiship activates on the literal command, not on inferred keywords
Activation is now literal: /akiship runs only when the turn contains the exact string /akiship and asks for the run to be performed, not consulted about. A comparison table separates "run /akiship completely" (execute) from "if I ran /akiship, what would be needed to complete it?" (consult only: answer from the checklist, edit no file, make no commit, no push). When a question reads either way, the default is consult.
The bare word "akiship", "full release", "run full release", and any completion-intensity phrase standing alone are demoted to ordinary vocabulary and trigger nothing. The limiting condition now opens the skill's description, so it is present exactly as often as the trigger word.
coding.B5: handing a check to a human is the last rung, never the default
The incident showed a wider problem. Handing a check to the owner costs exactly what a question costs: reading time and a real action on their side. But a hand-off is not treated as a question, so it slipped past every filter built for questions. coding.B5 closes that gap with a six-rung ladder. The agent climbs in order and stops at the first rung that settles the doubt, before any hand-off is allowed:
1. Read the code flow: most "needs manual testing" is really "nobody traced the call path yet". 2. Search the local tree: a README line, a CI matrix, or a similar existing setup often already has the answer. 3. Check vendor docs or the web: another platform's behavior is settled by its published documentation, not by observing it again. 4. Probe mechanically, right here: render another OS's path, stub the clock or an env var, run the pure function and read the string it returns. 5. Run the real thing, reversibly: back up first, restore in a trap, after checking the tool is actually present. 6. Only then hand off, with one line naming which rung failed and why.
Every item that survives to rung 6 must hand over a result to confirm, not a task to design: the exact command, the expected output, and what a deviation would mean. Familiar excuses such as "can only be verified end-to-end", "needs a real machine", or "only the owner can decide" are treated as signs the ladder was not climbed, not as valid reasons to stop.
Two related fixes in the same release
In the same incident, the session also redefined the owner's completion criterion. release.B8 now limits its self-answer license: it covers what the repo determines, never what the owner meant. A criterion in the owner's own words is theirs to define, and their own ambiguous wording is the one question worth interrupting for.
The push also violated an ABSOLUTE ban in a machine-local config file, which the precedence order had no rung for. index.md gains rung 3, the user's standing instructions (~/.claude/CLAUDE.md, CLAUDE.local.md): an item marked ABSOLUTE there is never weakened by anything below it, including a shared rule that grants agents autonomy.
What this means for AkiDevRule users
These changes point to one principle: an automated system is only trustworthy when the constraint is present at the same time and place as the trigger, not scattered around waiting to be loaded. AkiDevRule records the whole investigation and fix publicly in the repo's docs/research/ and docs/plan/done/, even when the fault was the system's own.
Anyone using /akiship should update to 2.6.0 or newer with npx @akinet/akidevrule@latest. Re-running that same command is how you update.