Regulated evidence for AI workflows.
An outside auditor — a regulator, a customer’s counsel, your own internal review — will increasingly want byte-identical evidence of what your AI system was running under, what it produced, and when. Satsignal anchors that evidence to a public chain, so the auditor can verify it hasn’t been edited since the run — without trusting your platform, your vendor, or us.
Configuration, authorization, and what came out.
Across the regimes below, the recurring auditor questions land on three artifacts. Each maps to a Satsignal primitive that is live on the API today; each verifies independently in any browser against any public block explorer.
The operating policy at decision time
What system prompt, user instruction, tool permissions,
budget caps, and model config was the agent running under?
A policy_snapshot hashes those five components,
anchors the snapshot, and lets an auditor with one component
verify it without seeing the others.
The authorization that triggered an action
What decision, score, or instruction did the agent commit
to before the result was visible? A commitment
anchors the hash now; the payload reveals later. With
commit-then-reveal under a 32-byte nonce, even low-entropy
decisions stay unguessable until the reveal.
The evidence the agent used or produced
Up to 10,000 items — tool-call logs, retrieved documents, intermediate outputs, evaluation rows — Merkle-batched into one on-chain receipt. Selective disclosure: hand a single item to an auditor with its inclusion path; the other 9,999 stay private.
Which obligations these primitives honestly help with.
Three live regimes — one EU, one US financial, one US federal — each push deployers toward keeping verifiable artifacts about their AI systems. Brief, honest read of where Satsignal’s primitives fit.
evidence_bundle at the time the run ends,
so an auditor can later verify the file you produce matches the
bytes that existed at retention time. Satsignal does not satisfy
Article 27 (fundamental-rights impact assessment), Article 14
(human oversight), or the deployer’s Article 26
classification rationale; the receipt is one artifact in that
stack, not the whole stack.
Background reading:
Council press release on the 7 May 2026 political agreement
(official source);
Computing.co.uk summary of the new dates;
IAPP on deployer evidence gaps
(written before the deferral; obligation structure still
accurate, deadline now superseded);
Raconteur technical audit guide
(same caveat).
policy_snapshot binds the
model + config in force at run time; an
evidence_bundle binds the prompt/response logs.
Whether that integrity layer is required, or merely useful, is
a call for your compliance team and counsel.
Source:
FINRA 2026 report — GenAI section.
Anchor a policy snapshot before the agent acts.
The most common opening move: hash the five components of the
operating policy, build a snapshot, anchor its sha256 via
POST /api/v1/anchors with
category: "policy_snapshot". The
policy_snapshot.py
helper is stdlib-only; no Satsignal SDK to install.
curl -O https://satsignal.cloud/policy_snapshot.py
# 1. Hash the five components of the operating policy. Each command
# prints {"sha256_hex": "..."}.
SYS=$(python3 policy_snapshot.py hash-component --file system_prompt.txt | jq -r .sha256_hex)
USR=$(python3 policy_snapshot.py hash-component --text "review this filing" | jq -r .sha256_hex)
TLS=$(python3 policy_snapshot.py hash-component --json-file tools.json | jq -r .sha256_hex)
BUD=$(python3 policy_snapshot.py hash-component --json-string '{"max_usd":5}' | jq -r .sha256_hex)
MOD=$(python3 policy_snapshot.py hash-component --json-file model_cfg.json | jq -r .sha256_hex)
# 2. Build the snapshot. Produces snapshot.json with anchor.sha256_hex
# and anchor.file_size ready for /api/v1/anchors.
python3 policy_snapshot.py build \
--agent-name claims-reviewer \
--agent-version 2026-05-09 \
--system-policy-hash $SYS \
--user-instruction-hash $USR \
--tool-permissions-hash $TLS \
--budget-limits-hash $BUD \
--model-config-hash $MOD \
--out snapshot.json
# 3. Anchor on chain.
SHA=$(jq -r .anchor.sha256_hex snapshot.json)
SIZE=$(jq -r .anchor.file_size snapshot.json)
curl -H "Authorization: Bearer sk_..." \
-H "Content-Type: application/json" \
-d "{\"matter_slug\":\"agent-runs-prod\",\"sha256_hex\":\"$SHA\", \
\"file_size\":$SIZE,\"category\":\"policy_snapshot\", \
\"label\":\"claims-reviewer policy $(date -u +%FT%TZ)\"}" \
https://app.satsignal.cloud/api/v1/anchors
# 4. Auditor side, later: verify one component without seeing the others.
python3 policy_snapshot.py verify \
--snapshot snapshot.json \
--system-policy-file system_prompt.txt
# {"verified": true, "matched": ["system_policy_hash"]}
The honest line between “evidence” and “compliance.”
This page is not legal advice and Satsignal is not a compliance service. Specifically:
- Whether you are EU AI Act compliant, FINRA compliant, or aligned with OMB M-26-04 depends on your full controls posture — risk assessment, governance, human oversight, vendor diligence, training data provenance, incident response, and several other workstreams that have nothing to do with anchoring a hash.
- Satsignal does not produce model bias reports, model cards, fundamental-rights impact assessments, training data lineage, or human-oversight documentation. Those remain the deployer’s or vendor’s job.
- A receipt confirms that a specific snapshot, commitment, or evidence bundle existed at a specific moment. It does not, by itself, establish that the bundle is complete, that the snapshot is what the agent was actually running, or that the underlying behavior was lawful.
- Citing the regimes above is a description of where the primitives plausibly help, not a representation that Satsignal has been certified, audited, or accepted as evidence in any specific proceeding.
What Satsignal supplies is one verifiable artifact in your stack: a third party can re-hash the payload, walk the Merkle path if needed, and check the on-chain transaction in any block explorer — without trusting Satsignal, your platform, or your vendor. That property is useful in many regulatory conversations. It is not a substitute for any of the others.