What's new in the 0.5 line
airlock breach — reconstruct what to rotate after an incident
A read-only command that answers, from the audit log you already have: what did the agent touch, did any of it leave the machine, and which exact credentials do I rotate now?
- Reconstructs secret-read → egress flows across rotated log segments.
- Opens with an integrity banner — runs
verifyacross every segment first, so the report proves the log it reasoned over was not edited or truncated. - Grades evidence honestly:
CONFIRMEDonly on payload-digest linkage; a known-collector hit isPROBABLE; a read with no egress isPOSSIBLE. Time-proximity alone is neverCONFIRMED. - Surfaces gate-config changes and model-API egress ("leaked to model context") separately; the latter is never counted as exfil.
- States coverage every report; a clean window rotates nothing and says so.
--simulateshows it on a canonical incident with no history needed.- Exit codes for IR scripts:
0clean,1burns found,2log untrustworthy.
pip install -U airlock-agent
airlock breach --simulate # see it, no log needed
airlock breach --since 2d # your last two days
airlock breach --markdown > ir.md # report for a manager / insurerAlso in 0.4.7–0.4.8
- Headless fail-closed (
AIRLOCK_UNATTENDED=block) for VM/CI/servers whereguardwould otherwise let an unansweredaskthrough. - Fixed a non-atomic policy-write race and
--versiondrift.
Hardening (0.5.1 → 0.5.3)
breach went through an adversarial deep-test pass; 9 findings fixed, most notably:
- CRITICAL timezone bug — off-UTC machines could report "clean" on a log holding a real incident. Log timestamps are now parsed as UTC end to end; verified identical across UTC / LA / Tokyo / Moscow / UTC+14.
- Concurrent-rotation
FileNotFoundErrorinverify/breach, Windows credential paths, phantom egress from search queries,.env.samplefalse positives, silent--report, duplicate burns, ANSI/newline report spoofing, silent bad--since, and a URL-host parsing edge.
Full detail: CHANGELOG.md.
CI green on Linux / macOS / Windows × Python 3.11 / 3.12 / 3.13. test_breach is 37 checks.