Repository navigation
Release notes: v3.0.0
Why this release
v3.0.0 is the focus release. Akmon now does one job: it seals an AI agent session into one signed, tamper-evident file that someone who doesn't trust you can verify offline, with the standalone agef-verify binary or with stock OpenSSL 3. Anything that didn't serve that job has been archived. Some commands, flags, config keys and JSON shapes changed, so this is a major version. The evidence format is unchanged (AGEF v0.1.3), and every bundle produced by 2.x still verifies.
Highlights
-
akmon seal: one command from trace to sealed evidence. Seal an OpenTelemetry GenAI trace from any agent, or an existing journal session. Akmon imports, bundles, checks integrity, signs, optionally adds an operator attestation, verifies its own output, and prints the exact commands to hand to the verifier.akmon bundle keygen --out signer.pk8 --public-out signer.pub akmon seal trace.json --key signer.pk8 --output audit.akmon # the auditor, on their own machine: agef-verify audit.akmon --verify-key signer.pub --require-signature agef-verify audit.akmon --verify-key signer.pub --require-signature --format markdown > report.md
-
An auditor report.
--format markdown(onagef-verifyandakmon bundle verify) prints a plain-language verdict, a checks table, the session window, unsigned metadata, and explicit "what this proves / what this does not prove" sections. -
Verdicts that say what was established. The headline now distinguishes
integrity OK; signature verified by key_id=…fromsignature present but NOT verifiedandUNSIGNED (integrity only). Without--require-signature, a pass means integrity only. -
Hardened verification. Archive parsing is stricter (duplicate entries, non-hex object names, symlinks and other non-regular entries are refused). Every manifest-sourced string is sanitized before it reaches your terminal.
bundle sign,bundle attestandbundle prove-opensslrefuse bundles that don't verify, so you can no longer get an OpenSSL "Signature Verified Successfully" for a broken bundle. -
Honest capture in three levels. OTEL imports are now
full,partialorstructural, computed from the content slots actually captured. The importer supports semconv v1.37–v1.42, including the inference-details event, and records failed calls.
Upgrade notes (read before upgrading scripts)
agef-verifyerror JSON:tool_versionis nowakmon_version. All bundle and seal errors share one shape:{tool, akmon_version, passed:false, error, category}.- Don't grep the human headline. Its wording changed. Use exit codes (
0pass,1verification failed,2usage,3I/O) or--format json(passed,integrity_ok,signature_verified). - Corrupt or truncated archives now exit
1, not3. Only I/O and environment problems exit3. otel importrefuses more input (exit 2): multi-trace files without--trace-id, traces with no GenAI provider or tool span, missing or invalid span timestamps, conflicting duplicate spans. In human mode the session id is now the only thing on stdout.capture_levelcan bepartial.--require-capture fullrejects it.akmon diffcompares more (retry attempts, status, errors), so sessions that used to match may now diverge. Request-hash differences are listed as informational and don't changematches. JSON-mode failures print{akmon_version, category, error}on stdout.- Agent policy: paths are normalized before matching (
src/../.git/confignow hits.git/**deny rules). Paths outside the project root need an explicit allow glob. File tools no longer write through symlinks. Permissions are also checked on the canonical (symlink-resolved) path, filesystem deny globs match case-insensitively, andapply_patchrejects a patch whose headers name a different file thanfile_path. akmon config key set <provider>: prefer piping the key on stdin or settingANTHROPIC_API_KEY. A key passed on argv prints a warning.~/.akmon/config.tomlis now always mode0600.--output text|jsonmust come before the subcommand. Agent flags such as--audit-log,--shell-allowand--mcp-servernow work after it too.- Library users of
akmon-bundle:EventsReader::new(reader, algorithm).object_path,read_object_file,write_object_fileand thewith_*builders were removed.
Removed and archived
These commands now fail with a usage error (exit 2). The code is under archive/ and the full tree is tagged archive/pre-focus-v2.2.1. Restore an item with git checkout archive/pre-focus-v2.2.1 -- <path> (equivalently git checkout v2.2.1 -- <path>: both tags point at the same commit).
| Removed | Use instead |
|---|---|
akmon sign and the [signing] post-run hook |
akmon seal, or akmon bundle sign + --verify-key |
akmon slo verify / slo trend, [slo] config |
Gate on agef-verify / akmon bundle verify exit codes |
akmon import / akmon export (AKMON.md sync), TUI /import /export |
akmon init reads existing context files |
akmon spec, akmon scout, --dossier, tools read_spec / write_spec |
None |
Semantic index (semantic-index feature, akmon-index, --index, /index, semantic_search) |
The search tool |
spawn_subagent, AKMON_EXPERIMENTAL_SUBAGENTS |
None |
Legacy [slo] and [signing] sections in ~/.akmon/config.toml are ignored rather than rejected.
Deprecated, still working: akmon audit verify and akmon evidence verify are hidden and print a notice. Use akmon seal <session-id>, or akmon bundle export followed by akmon bundle verify.
Regulatory wording corrected
The EU AI Act timeline now follows Regulation (EU) 2026/1744 (Digital Omnibus on AI, in force 27 July 2026). The high-risk duties, including Art. 12 logging and Art. 19/26(6) log retention, apply from 2 December 2027 (Annex III) and 2 August 2028 (Annex I): deferred, not cancelled. The 2.2.0 notes said operator attestation closes an "Art. 14 / Art. 12(3)" gap. That overstated it: Art. 12(3) covers only remote biometric identification, and an attestation helps evidence human oversight rather than satisfy Art. 14. Akmon helps you produce evidence. It does not certify compliance.
Known gaps
- No signed time yet. AGEF signatures don't cover a timestamp. For now, use the RFC 3161 recipe in the README (
openssl tsonproof/statement.bin, with a qualified TSA where legal weight matters). Native timestamps (manifest.timestamps[], AGEF v0.1.4) are planned. - Release binaries are covered by
SHA256SUMSand an SBOM but are not yet signed.
Verify this release
base=https://github.com/radotsvetkov/akmon/releases/download/v3.0.0
curl -fL -O "$base/agef-verify-linux-x86_64" -O "$base/SHA256SUMS"
sha256sum --check --ignore-missing SHA256SUMSFull details: CHANGELOG.md · Archive index: archive/README.md · Security policy: SECURITY.md
Full Changelog: v2.2.1...v3.0.0