A reviewer asks which instructions produced a decision eight months ago. On a mutable assistant that question has no answer: the prompt has been edited since, the thread shows the new one, and the sources the model read have moved on. That is not a documentation gap — it is a reason not to be allowed to use the tool.
The agent
| system_prompt | Review the filing against the checklist. For each item state compliant / non-compliant / not-applicable with the clause it turns on. Quote the text you relied on. Never infer intent. |
| tool_config | web search restricted to the regulator's domains |
| output_schema | items[] with clause, verdict, evidence_quote, source — validated on every run |
The workflow
Pin and record
Each review runs on an explicit version. The run stores the input hash, the version id, the resolved model id, every tool call and every source with a fetch timestamp.
Snapshot the evidence
Sources are captured with a content hash, so “the page said this on 14 August” is checkable rather than asserted.
Export the file
One run exports as JSON: instructions, settings, evidence, output, hashes. That is the attachment for the audit file.
Never delete
Deprecated versions still serve their existing chats and stay readable forever. Retention expiry redacts content and keeps the hashes.
What you get
Pin an agent. Run it in a year. Get the same thing back.
Claude, ChatGPT and Gemini included — no provider account to open. Build one agent, publish v1, run it, then change the prompt and diff the two.