SynapCores v1.9.1 — Your agent's audit trail can now prove it wasn't touched

Published on July 14, 2026

SynapCores v1.9.1 — Your agent's audit trail can now prove it wasn't touched

v1.9.0 put durable AI agents inside the database — declared in SQL, fired by schedule and data changes, every run recorded in _system_agent_runs. That answered "what did the agent do?" v1.9.1 answers the harder question a regulator actually asks: "how do I know that record wasn't edited after the fact?"

The gap we're closing

A read-only table is not a tamper-proof one. Anyone with disk access could quietly change a stored run — flip a status, rewrite an output — and nothing would catch it. For SOAR, AML, and aerospace teams, an audit you can't prove is unmodified is worth very little. So we made the agent audit tamper-evident by construction.

How it works — and how you check it

Every run is now hash-chained: entry_hash = sha256(prev_hash ‖ the run's fields), where prev_hash is the previous run's hash in a per-tenant ledger. Edit any stored run and its hash no longer recomputes — and the link to the next run breaks. The classic hash-chain guarantee, applied to your agents' decisions.

You verify it with one query — no external tooling, no separate audit service:

-- Any run that was modified in storage shows up here:
SELECT run_id, agent_name, started_at, verified
FROM   _system_agent_runs
WHERE  verified = false;

_system_agent_runs gained three columns — prev_hash, entry_hash, and the computed verified. It's TRUE/FALSE for chained runs and NULL for runs that predate the ledger (we won't pretend an unchained record is attested when it isn't).

Why this is a moat, not a feature

The cloud agent platforms will tell you they log everything too. The difference is where: their audit lives in someone else's cloud, alongside an orchestrator you don't run and a model endpoint you don't control. SynapCores keeps the agent, its memory, its governance, and now its tamper-evident lineage in one self-hosted binary — on your infrastructure, where the data already is. Provable and it never leaves your box. That combination is the one they can't offer.

Try it

docker pull synapcores/community:v1.9.1-ce

Drop-in from v1.9.0 — no migration, and lineage is on by default. Point an agent at a table, let it run, then run SELECT ... WHERE verified = false and watch it stay empty. That empty result is the whole point.