{
  "question": "How do I export a period-locked signed agent spend pack for an external auditor?",
  "slug": "how-to-export-a-period-locked-signed-agent-spend-pack-for-an-external-auditor",
  "url": "https://www.rightshold.com/answers/how-to-export-a-period-locked-signed-agent-spend-pack-for-an-external-auditor",
  "short_answer": "Close a date range, then export a signed pack of that period's agent spend and approval records that an auditor can verify without write access — and that cannot be silently rewritten afterward. Pin the ledger head (or day snapshot) at period close, collect the period's authorize_spend allows/denies, human-approval receipts and AI-run or flight-recorder checkpoints that fall inside from/to, and issue a signed activity statement (agent_statement) for that window. Hand the auditor the statement, the receipt set, the pinned head hash and the free verify steps (verify_statement, ledger_verify, verify_ai_run / verify_recorder). That is distinct from how a CPA audits what an agent did in the books (process and sampling) and from proving books weren't edited after the fact (lock dates and hashed report exports): here the deliverable is a period-bounded, signed, hash-chained pack with offline verify.",
  "checklist": [
    "Define the closed period in UTC (from/to ISO dates) and freeze new back-dated entries into that window in your own systems. On Rightshold, sealed ledger history does not rewrite; pin the head height and block_hash (or the day snapshot for the close date) at close time.",
    "Export the agent's signed activity statement for that from/to with agent_statement (invoices, orders and credit movements with opening/closing settled-net totals). Keep the signature with the envelope.",
    "Collect every authorize_spend allow/deny, verify_human_approval-relevant receipt, and record_ai_run / recorder_checkpoint that falls inside the period. Store them outside the agent's credentials.",
    "Build the auditor pack: statement + signature, receipt list, pinned ledger head (height, block_hash), period bounds, agent id, and a manifest that lists SHA-256 of each included file.",
    "Sign or seal the manifest (issuer signature on the statement already covers its rows; hash the rest so substitution is detectable). Do not give the auditor write keys — only the pack and public verify endpoints.",
    "Give the auditor the verify steps: verify_statement on the envelope; ledger_verify (and optional ledger_anchor / day snapshot) against the pinned head; verify_ai_run or verify_recorder for disclosed runs; confirm every spend receipt's timestamp and credential sit inside the period.",
    "After export, treat the period as closed: corrections go as new adjusting entries in an open period, not as edits to the exported pack. Keep the original pack bytes and hashes for the retention window your auditor requires.",
    "Drill it once: export a staging period, flip one receipt, re-run verify, and confirm the mismatch surfaces before you rely on the pack in a real engagement."
  ],
  "sections": [
    {
      "heading": "What a period-locked pack is (and is not)",
      "points": [
        "A period-locked pack is a signed export for a closed from/to window: agent activity statement, spend and approval receipts, and a pinned ledger head. The auditor rechecks signatures and hashes; they do not need an account that can write.",
        "How can a CPA audit what an AI agent did in the books covers sampling, walkthroughs and control testing. How to prove small business books weren't edited after the fact covers accounting lock dates and hashed trial-balance exports. This page is the agent-spend evidence pack you hand over for one closed period.",
        "Rightshold day snapshots cover every block sealed before 00:00 UTC that day and reproduce past days exactly because sealed history does not change. Pinning that head at close is what makes 'later rewrite' detectable against the pack the auditor already holds."
      ]
    },
    {
      "heading": "Build the pack from statement, receipts and a pinned head",
      "points": [
        "agent_statement (owner key) returns a signed rs-statement/0.1 document for agent_id with optional from and to ISO dates: invoices, orders, credit movements, totals and opening/closing settled-net figures. verify_statement is free and checks signature and issuer.",
        "Add the period's spend decisions (authorize_spend allow/deny receipts), human-approval decision receipts, and any record_ai_run receipts or flight-recorder excerpts you disclosed. Hash each file into a manifest so a swapped PDF or JSON fails the auditor's checksum list.",
        "Record the ledger head (height + block_hash) or the /v1/ledger/snapshot pointer for the close day inside the pack. An auditor who later sees a different head for the same historical day has evidence of divergence, not a silent edit of their copy."
      ]
    },
    {
      "heading": "Verify without write access",
      "points": [
        "verify_statement checks the activity statement offline against published issuer keys. ledger_verify recomputes the chain without a key. verify_ai_run and verify_recorder check disclosed model-run and flight-recorder excerpts the same way.",
        "Refuse to share owner API keys with the auditor. Read-only verify tools and the bytes in the pack are enough; if they need a live re-fetch, use public verify endpoints or a time-boxed read credential that cannot decide approvals or authorize spend.",
        "EU AI Act Article 12 (record-keeping) and Article 14 (human oversight) expect deployers to keep logs and support oversight. A period-locked signed pack is that evidence for agent spend: closed range, signed totals, checkable chain."
      ]
    }
  ],
  "checks": [],
  "ask_rightshold": {
    "start": "https://www.rightshold.com/start?ref=seo",
    "mcp_endpoint": "https://www.rightshold.com/mcp",
    "ask": "Export a signed activity statement for my agent for the closed period 2026-10-01 to 2026-11-01 that an external auditor can verify without write access, and tell me how to pin the ledger head and attach spend/approval receipts for that same window.",
    "mcp_call": {
      "tool": "agent_statement",
      "arguments": {
        "agent_id": "agent_YOUR_AGENT_ID",
        "from": "2026-10-01",
        "to": "2026-11-01"
      }
    },
    "also": [
      "Needs your API key (trust toolset). agent_statement returns a signed rs-statement/0.1 envelope for that from/to; keep the signature with the document.",
      "verify_statement is free: the auditor checks signature and issuer without write access.",
      "ledger_verify is free and keyless; pin height and block_hash (or the day snapshot) at period close inside the pack so later divergence is visible.",
      "record_ai_run seals model activity in the period; verify_ai_run and verify_recorder are free for disclosed runs and flight-recorder excerpts.",
      "authorize_spend / verify_human_approval receipts from the same window go in the pack as separate files listed in the manifest."
    ],
    "scope": "Rightshold issues signed activity statements and verifies ledger chain integrity, AI-run receipts and flight-recorder excerpts. It never holds or moves money and does not replace your CPA's engagement letter or your accounting lock dates. Building the multi-file pack, hashing the manifest and retaining copies are steps you run around those signed exports. Not accounting, tax or legal advice."
  },
  "sources": [
    {
      "title": "RFC 6962: Certificate Transparency (append-only Merkle hash logs)",
      "url": "https://www.rfc-editor.org/rfc/rfc6962"
    },
    {
      "title": "NIST SP 800-53 Rev. 5: AU-9 (protection of audit information) and AU-11 (audit record retention)",
      "url": "https://csrc.nist.gov/publications/detail/sp/800-53/rev-5/final"
    },
    {
      "title": "EU AI Act, Regulation (EU) 2024/1689: Article 12 (record-keeping) and Article 14 (human oversight)",
      "url": "https://eur-lex.europa.eu/eli/reg/2024/1689/oj"
    },
    {
      "title": "OpenTimestamps: calendar-anchored timestamp proofs",
      "url": "https://opentimestamps.org/"
    },
    {
      "title": "Agent activity and statements on Rightshold",
      "url": "https://www.rightshold.com/agent-credentials"
    },
    {
      "title": "Ledger verify on Rightshold",
      "url": "https://www.rightshold.com/witness/verify"
    }
  ],
  "related": [
    {
      "title": "How can a CPA audit what an AI agent did in the books?",
      "url": "https://www.rightshold.com/answers/how-can-a-cpa-audit-what-an-ai-agent-did-in-the-books"
    },
    {
      "title": "How to prove small business books weren't edited after the fact",
      "url": "https://www.rightshold.com/answers/how-to-prove-small-business-books-werent-edited-after-the-fact"
    },
    {
      "title": "How to log every AI agent tool call for audit",
      "url": "https://www.rightshold.com/answers/how-to-log-every-ai-agent-tool-call-for-audit"
    },
    {
      "title": "How to enforce segregation of duties so an AI agent cannot both create and approve a payment",
      "url": "https://www.rightshold.com/answers/how-to-enforce-segregation-of-duties-so-an-ai-agent-cannot-both-create-and-approve-a-payment"
    }
  ],
  "computed_from": "Curated guidance; license verdicts computed from Rightshold's license profiles at render time. Not legal advice.",
  "updated": "2026-11-07"
}