New · 0.7Actualis 0.7 ends every report with what it read and what it could not, marks each finding confirmed or needs-validation, and works from inside Claude Code.Release notes →
Actualis reads the transcripts your coding agents already write and reports what actually ran. A clean report used to look the same whether actualis read everything or could not look. 0.7 ends every report with a coverage line: what was read per agent, what could not be read, and any gaps. Each finding now says whether it is confirmed or needs validation, and what is missing. A Claude Code plugin lets your agent run the audit for you. actualis still never uses the network.
The report ends with one line: Coverage complete, with how far back each agent’s transcripts go, or the gaps. A gap is an agent whose transcript directory exists but had nothing read, a transcript file or project directory that could not be opened, more than 1% of lines that would not parse, --days reaching further back than the agent keeps transcripts, downloads --ioc could not check, or reputation lists over 7 days old. Files that could not be opened used to be dropped silently; now they are counted. actualis --explain coverage says how each part is decided.
--fail-on-coverage: a gate that knows it was blind
Exit 5 when the run could not see everything it was asked to. Exit 3 from --fail-on wins when both apply. Without the option, gaps never change the exit code, and --fail-on results are unchanged. In CI: actualis --days 7 --fail-on high --fail-on-coverage.
Confirmed, or needs validation
Every finding in --json and in the MCP coach_findings result carries an assessment (confirmed or needs-validation), a basis (observed or inferred) and missing, the fact that would settle it. The text report prints what is missing for each finding that needs validation. --diff shows assessments that changed, and coverage gaps that appeared or cleared.
Assumptions and rejected leads, in the open
--json gains coverage (per agent and per check), assumptions (every number derived or assumed rather than read, with how much it covers) and rejected with rejected_total: IOC name matches outside the version range, placeholder credentials, and reputation candidates a fresh check cleared. --verbose prints the rejected leads in the text report. All additive; schema_version stays 1.
Before your transcripts expire
Claude Code deletes transcripts older than cleanupPeriodDays (default 30). actualis reads that one key from Claude Code’s settings.json, keeps nothing else from the file, and --self-check lists it. New finding AF014 (info) warns when transcripts will be deleted within 7 days. Like AF013, it is never gated.
Use it from Claude Code
A Claude Code plugin adds an actualis skill, so your agent can answer “what did my agents cost?” or “did a credential leak?” by running the CLI, and an /actualis command. Install the CLI first, then claude plugin marketplace add digital-foundry/actualis and claude plugin install actualis@actualis. The skill never installs anything and never prints credential values.
0.7.0 — Upgrading from 0.5:brew upgrade actualis or pip install -U actualis. Exit codes 0 to 4 mean what they did; 5 appears only with --fail-on-coverage. Full details: docs/json.md and docs/findings.md.
Spread the word
Found Actualis useful? Tell the people you build with. Copy a post, make it sound
like you, and the link at the end shows the image above.
Each post gives both ways to install: Homebrew on macOS and Linux, and uv
(or pipx) on any OS, Windows included. Both install the same release from
PyPI,
the one place Actualis is published, so readers can check the version, the licence and
that it has no dependencies before they run anything.