Axiom
Think before AI thinks.
Workflow guardrails for Codex and Claude Code.
Axiom is a safety-first workflow router for high-impact coding-agent actions. It makes scope, authorization, evidence, and rollback explicit while ordinary coding requests continue normally.
Capable coding agents can begin before the target, authority, rollback path, or proof of success is clear. Axiom loads one focused workflow when a request needs those boundaries. It does not grant mutation authority: selecting a route never, by itself, permits an edit, commit, push, deployment, deletion, credential use, or external action.
Unlike a generic prompt collection, Axiom has an inspectable session hook, a small routing gate, shared versioned Skills, route-specific stop conditions, and checked-in validation fixtures. It is a public beta, not a sandbox or a guarantee that an agent cannot make a mistake.
Scope. Authority. Evidence. Rollback.
| Safe first request | Expected boundary |
|---|---|
"Perform a read-only audit of this repository's AGENTS.md instruction system. Report findings only; do not modify files." |
Select agents-architect, report evidence, and stop without changes |
| "Summarize the purpose of this README. Do not modify files." | Select no Axiom route and continue normally |
Install one host, inspect the installed hook, then test one routed request and one no-route control. Report the observed result with the compatibility form or report a false positive or false negative with the routing-case form.
60-Second Start
Choose one host and install Axiom for Codex & Claude Code from the Git marketplace.
Codex:
codex plugin marketplace add wheakerd/axiom
codex plugin add axiom@axiom
Start a new Codex chat or CLI session. In that fresh session, open /hooks and
compare the installed handler with the
exact checked-in commands.
Claude Code:
/plugin marketplace add wheakerd/axiom
/plugin install axiom@axiom
/reload-plugins
After /reload-plugins, open /hooks and compare the installed handlers with
the exact checked-in commands.
Only after reviewing the hook for your host, run the two safe prompts above.
The first request is expected to select agents-architect and remain
read-only. The second is expected to select no Axiom route and continue through
the host normally. These are expected contracts, not claims that your host has
already reproduced them.
If either result differs, use the non-destructive checks in Getting Started rather than deleting caches or rewriting local state.
When Axiom Routes
| User outcome | Route | Core boundary |
|---|---|---|
| Audit or maintain repository instructions | agents-architect |
Inspect first; changes remain limited to the authorized instruction system |
| Reduce Codex usage overhead | optimize-codex-usage |
Preserve the required quality and safety bar; never invent hidden usage data |
| Review an Axiom-guided task | review-axiom-task |
Keep the retrospective read-only and label unavailable history |
| Confirm a consequential external action | confirm-external-action |
Bind actor, target, payload, disclosure, count, and retry semantics before one verified effect |
| Make Git publication traceable | traceable-git-submit |
Keep checkpoint, consolidation, remote refresh, push, and cleanup as independent permissions |
| Plan or execute a reversible persistent change | reversible-system-change |
Separate planning, rehearsal, promotion, rollback, and destructive retention authority |
When Normal Execution Continues
Ordinary coding, documentation, explanation, status, local-commit, and conceptual requests continue through the host normally when no route clearly matches. A no-route result is not a safety certification; the host's normal permissions and repository instructions still apply.
The startup gate is using-axiom. It selects the smallest matching route and
continues normally when none applies. See Examples for
routed requests and non-routing controls.
Public-Beta Evidence Status
The package shape, manifests, hooks, route contracts, and validation fixtures are checked in and statically testable. Fresh-session behavior still depends on the named host version, operating system, policy, installation method, and installed snapshot. A current external reproduction must therefore be reported as such; repository presence or command success is not enough.
Follow the field-validation protocol to classify a
result as checked in, statically validated, host observed, externally
reproduced, not verified, or unavailable. Current release-specific evidence is
kept in Compatibility, with the machine-readable
current boundary in release status. Version
0.7.7 is STATIC-ONLY: immutable v0.7.4 observations are preserved but are
not carried forward as a current-release host pass.
Deliberate Non-Goals
Axiom is not a general-purpose memory system, persistent context database, autonomous multi-agent framework, background policy daemon, or workflow for every coding task. It does not prevent every model error, replace host or repository permissions, or turn command success into proof of an outcome.
It also does not start a service, watcher, polling job, or updater. The host controls marketplace refresh and plugin installation; Claude Code can perform those actions in the background when marketplace auto-update is enabled.
An Axiom task review is a bounded retrospective over evidence the host exposes. It is not telemetry, an instrumented execution trace, a source of hidden model reasoning, or a promise that compacted or unavailable history can be recovered.
How Routing Works
At session start and after host compaction, the platform SessionStart hook
reads skills/using-axiom/SKILL.md into the current session. That gate:
- Honors higher-priority system, developer, user, and repository instructions.
- Matches an explicit Axiom request or a request that clearly fits a bundled route.
- Selects the smallest matching skill set.
- Loads only the references needed for the active phase.
- Continues through the host's normal workflow when no route clearly applies.
The gate decides which instructions are relevant; it does not grant permission
to act. For example, selecting review-axiom-task permits only a retrospective
of the scoped task evidence; it does not rerun that task. Selecting
reversible-system-change for a migration plan keeps the work read-only. An
explicit consequential app action selects confirm-external-action; a preview
does not authorize execution, and an uncertain result is not retried blindly.
An explicit Git submit, publish, or push selects traceable-git-submit, while
checkpoint creation, metadata, consolidation, remote refresh, push, and cleanup
remain separate actions. A direct push preserves history and creates no Axiom
metadata. Read the
Architecture and Trust Model for
the full boundary.
What Gets Installed
Both platforms install the same checked-in skills/ source. No SKILL.md
content is copied or forked for a host.
Shared skills
using-axiom, the session-start routing gate.agents-architect, the repository-instruction workflow.optimize-codex-usage, the explicit Codex consumption workflow.review-axiom-task, the read-only Axiom task-review workflow.confirm-external-action, the consequential external-action workflow.traceable-git-submit, the checkpoint and Git submission workflow.reversible-system-change, the persistent-change workflow.
Each task workflow loads its supporting Markdown references on demand.
Platform wrappers
- Codex uses
.codex-plugin/plugin.json,.agents/plugins/marketplace.json, andhooks/codex-hooks.json. - Claude Code uses
.claude-plugin/plugin.json,.claude-plugin/marketplace.json, andhooks/claude-hooks.json.
Both manifests point to ./skills/. The platform-specific hooks read the same
skills/using-axiom/SKILL.md gate from the installed plugin root. There is no
bundled runtime dependency or private maintenance tool in the release package.
Inspect The Hooks
Plugin hooks execute commands in the host session, so inspect the installed
definition in /hooks before trusting it. Axiom's checked-in commands perform
foreground output and one local file read. If the installed definition differs,
stop trusting that hook until the installed package and this repository have
been reconciled.
Codex SessionStart
The matcher is startup|resume|clear|compact. On Linux and macOS, the exact
checked-in command is:
printf '%s\n\n' 'You have Axiom. Load this startup front door before deciding whether any Axiom skill applies:'; cat "${PLUGIN_ROOT}/skills/using-axiom/SKILL.md"
On Windows, the exact checked-in command is:
powershell -NoProfile -ExecutionPolicy Bypass -Command "Write-Output 'You have Axiom. Load this startup front door before deciding whether any Axiom skill applies:'; Write-Output ''; Get-Content -Raw (Join-Path $env:PLUGIN_ROOT 'skills/using-axiom/SKILL.md')"
Claude Code SessionStart
The matcher is startup|resume|clear|compact. The exact checked-in command is:
echo 'You have Axiom. Load this startup front door before deciding whether any Axiom skill applies:'; cat "${CLAUDE_PLUGIN_ROOT}/skills/using-axiom/SKILL.md"
For Claude Code, the compact source follows either manual or automatic
compaction. Successful SessionStart stdout is added to Claude's context, so
this is Axiom's only post-compaction routing injection. Axiom declares no
PreCompact handler: ordinary successful stdout from that event is not
context injection. See the official
Claude Code hooks reference.
These commands contain only printf or echo plus cat, or PowerShell output
plus Get-Content. They contain no file-writing, background-launch, or network
command. The hook reads the routing gate; the gate makes the route decision.
Updating
Axiom itself does not check for, download, or install updates. The host owns that lifecycle. To request a manual update, use the relevant host workflow.
Codex:
codex plugin marketplace upgrade axiom
Claude Code:
/plugin marketplace update axiom
/plugin update axiom@axiom
/reload-plugins
In a supported Codex workspace plugin UI, use Refresh. Start a new Codex session after refreshing, or reload Claude Code plugins. Review any changed hook again before trusting it.
Claude Code can also refresh a marketplace and update its installed plugins on
disk in the background after startup. Auto-update is disabled by default for
third-party and local development marketplaces, but a user or administrator
can enable it. The running session keeps the version loaded at launch; use
/reload-plugins after an update notification or wait for the next launch.
Therefore, the absence of a manual refresh does not prove that the installed
files are unchanged. See Claude Code's
auto-update documentation
and review any changed Axiom hook before trusting the new snapshot.
Disabling Or Removing
To remove the exact Codex installation from the axiom marketplace:
codex plugin remove axiom@axiom
In Claude Code, disable Axiom while keeping it installed, or uninstall it:
/plugin disable axiom@axiom
/plugin uninstall axiom@axiom
After a Codex removal, start a new session. After a Claude Code change, run
/reload-plugins or start a new session. Confirm that Axiom is no longer
enabled in the host's plugin list and that its hook is absent from /hooks
before treating it as inactive. Do not edit installed files or delete host
caches as a substitute for the host-managed disable or removal workflow.
Troubleshooting
If the loading message or expected route is missing, first confirm in /hooks
that the plugin hook is installed, enabled, trusted, and identical to the
checked-in definition. Then start a fresh Codex session or run
/reload-plugins in Claude Code. Existing sessions may retain earlier hook and
skill state.
If routing is missing after manual or automatic Claude Code compaction, confirm
that compact remains in the installed SessionStart matcher and that exactly
one matching loading event occurred. Do not add or trust a PreCompact
context-loading command as a workaround; its ordinary successful stdout does
not enter Claude's context.
Do not delete host data, clear caches, edit the installed plugin, or change global configuration merely to make routing appear. Follow the bounded troubleshooting sequence and report an unavailable validator as unavailable, not passed.
Documentation
- Getting Started: installation, hook review, first route, control request, and non-destructive troubleshooting.
- Examples: requests, expected routes, safety boundaries, and actions each route does not authorize.
- Architecture: wrappers, hooks, routing, on-demand references, and normal continuation.
- Trust Model: authority, credentials, mutation, evidence, and update boundaries.
- Compatibility: checked-in support and validation evidence levels.
- Field Validation: a safe fresh-session protocol, evidence labels, and design-partner reporting.
- Security Policy: private vulnerability boundaries and public routing/compatibility reporting paths.
- Distribution and Launch: current channel requirements, prepared listing copy, and publication gates.
- Changelog and v0.7.7 release notes: release history and version-specific evidence.
Contributing
Read CONTRIBUTING.md before changing shared skills, platform wrappers, hooks, or public claims. The focused distribution and publication checks are:
python3 scripts/check-distribution-drift.py
python3 scripts/check-compatibility-evidence.py --self-test
python3 scripts/check-publication.py
python3 -m unittest discover -s tests -p 'test_*.py'
They compare the skill tree with both manifests, both marketplace wrappers,
and the seven-item Shared skills list above; validate version-bound host
evidence and the current static-only boundary; and exercise each publication
policy domain with standard-library-only focused tests. These are contributor
and CI checks, not installed runtime dependencies.
Pull requests to main, including fork contributions, run these read-only
distribution and publication checks on the proposed merge tree. The workflow
grants only contents: read, does not reference repository secrets, and checks
out with persist-credentials: false; it does not require the contributor head
to be GitHub-signed or hosted in this repository. Those results validate a
proposed tree only. Release provenance is established separately for protected
main, immutable v* tags, bounded release candidates, and GitHub Releases.
License
MIT
No comments yet
Be the first to share your take.