~/.cynative/audit.log. The log is on by default and fail-closed: if a call cannot be recorded, the run aborts rather than proceeding without a trail. This gives you a complete, tamper-evident record of every action the model took — what it called, with what arguments, what decision was made, and which agent prompted it.
What gets logged
Every tool call produces one or more JSONL records. Each record captures:
Every record from an agent run also includes the agent’s name, source, and SHA-256 file digest — so any finding can be traced back to the exact prompt revision that produced it.
Redaction
Tool results are redacted before they are written to the log. Cynative’s redactor scans the result string for secret-shaped values (API keys, tokens, credentials) and replaces them before the record is persisted. Approval-prompt arguments are stored verbatim — they match exactly what you saw and approved at the prompt. Arguments for calls that were never shown at an approval prompt (innercode_execution calls, ungated orchestration tools, and unknown tools) are also redacted before logging, so a resolved secret that a script or the model copied from earlier output is never persisted.
Fail-closed behavior
The audit log is fail-closed by design. If any of the following occur, the run aborts immediately rather than continuing without a complete record:- A record cannot be marshaled to JSON.
- A record cannot be written to the log file (e.g. disk full, permissions error).
- The log file cannot be opened at startup.
Configuration
Configure the audit log underaudit: in ~/.cynative/config.yaml, or via environment variable. Environment variables override the config file.
Example
~/.cynative/config.yaml snippet:
max_size_mb, it is renamed and a new file is opened. Files older than retention_days are pruned on the next rotation. If compress is true, rotated files are gzip-compressed asynchronously.
