{
  "question": "How do I give an outside auditor read-only, time-limited access to my AI agent's action log?",
  "slug": "how-to-give-an-outside-auditor-read-only-time-limited-access-to-an-ai-agents-action-log",
  "url": "https://www.rightshold.com/answers/how-to-give-an-outside-auditor-read-only-time-limited-access-to-an-ai-agents-action-log",
  "short_answer": "Don't hand over an admin login, and don't rely only on an export you made yourself. Give the auditor their own credential that can only read, covers only the agent's log and stops working on a set date, and keep a record that you granted it. Auditing standards point this way: PCAOB AS 1105 says evidence the auditor obtains directly is more reliable than evidence obtained indirectly, and information the company produces has to be tested for accuracy and completeness. NIST SP 800-53 AU-9(6) calls for read-only access to audit information. On Rightshold, if the agent records its actions with record_action, you can issue a credential bound to that one stream with only the read and export scopes and expires_in_days set to the fieldwork window (1 to 90 days). It can read events and download their signed evidence, it can't add anything, and you can revoke it at once. A signed statement for the period (up to 31 days) counts the events and re-checks the hash chain, so the auditor can test that your list of events is complete. Record the access window itself with record_access_grant.",
  "checklist": [
    "Agree the scope in writing with the auditor: which agent, which period, what they need to do (read events, download signed evidence, check the chain) and the last day of fieldwork.",
    "Make sure the agent's actions land in one place you can scope. On Rightshold, record_action puts every action in your account's Agent action records stream, so one stream id covers the whole population.",
    "Issue the auditor their own credential: POST /v1/operations/workspaces/{workspace_id}/credentials with stream_id, a label naming the firm and engagement, scopes [\"read\", \"export\"] and expires_in_days set to the fieldwork window. Leave out ingest and reconcile so it can't add or reconcile events. The rso_ token is shown once; hand it over directly.",
    "Give them the population and a way to test it: list the period's event ids from the stream with your account key, and issue a signed statement for the same period (POST /v1/operations/workspaces/{workspace_id}/statements with period_start and period_end, up to 31 days). The statement's event count and chain check let the auditor confirm the list is complete.",
    "The auditor then reads the sampled events directly with their credential (GET /v1/operations/records/{stream_id}/{event_id}) and downloads signed evidence from the same path plus /export. They verify statements with POST /v1/operations/statements/verify, or offline with a separately pinned issuer key.",
    "If they only need the summary, share the statement instead: POST .../statements/{statement_id}/shares with reviewer and expires_in_days (1 to 90, default 14) returns a private review link, shown once. It needs no account, re-checks the hash chain on every open and counts each open.",
    "Record the access: record_access_grant with the resource (the stream), grantor (who approved it), scope (read and export only), valid_from and expires_at matching the credential. check_access_grant answers whether it was in force on any date, and anyone can check the signed record free with verify_access_record.",
    "Do the same for logs kept elsewhere. In AWS, give the auditor a role they assume with an external ID, read-only permissions and a DateLessThan condition on aws:CurrentTime, so access ends on the date even if nobody remembers to remove it (NIST AC-2(2)).",
    "When fieldwork ends, revoke the credential (POST .../credentials/{credential_id}/revoke) and any review links, record the end with revoke_access_grant, and keep both records for your next access review."
  ],
  "sections": [
    {
      "heading": "Why an export isn't enough and an admin login is too much",
      "points": [
        "A log export you prepare is information produced by the company. Under PCAOB AS 1105 the auditor has to test its accuracy and completeness (or the controls over it), and evidence they obtain directly is more reliable than evidence they receive indirectly. Letting them read the records themselves reduces both the work and the doubt.",
        "A full login goes too far the other way. NIST SP 800-53 AU-9(6) calls for read-only access to audit information, and AU-9(4) limits who can manage audit logging, because anyone who can change the log can cover their tracks. An auditor account that could add or edit entries would weaken the records being tested.",
        "End dates matter because temporary access tends to outlive the engagement. AC-2(2) asks for temporary accounts to be removed or disabled automatically after a set period, not when an administrator gets round to it."
      ]
    },
    {
      "heading": "One stream, read-only, with an end date",
      "points": [
        "Rightshold operations credentials are bound to one stream and carry only the scopes you pick from ingest, reconcile, read and export. A read and export credential can fetch an event and its signed evidence by id, and nothing else: it can't add events, see other streams or manage members, policies or billing. It expires after expires_in_days and can be revoked or rotated at once, and each issue is written to the workspace's append-only audit history.",
        "The credential reads events by id, so you supply the list. The signed statement for the same period is the check on that list: it counts the period's recorded events and re-verifies the stream's hash chain, so a list with events missing won't match the count.",
        "A review link is the lighter option when the auditor only needs to confirm the statement. Once it expires or is revoked it answers like a link that never existed."
      ]
    },
    {
      "heading": "What Rightshold doesn't do for auditor access",
      "points": [
        "It doesn't deliver the token or link (you hand them over) and doesn't check who uses them: anyone holding one can use it until it expires or you revoke it. record_access_grant is your signed record of what was allowed. It doesn't enforce anything by itself; the credential does.",
        "A statement attests the records held for the period. It doesn't establish that the recorded actions happened, were complete or were lawful, so the auditor still tests events back to source documents and approvals. Not audit or legal advice."
      ]
    }
  ],
  "checks": [],
  "ask_rightshold": {
    "start": "https://www.rightshold.com/start?ref=seo",
    "mcp_endpoint": "https://www.rightshold.com/mcp",
    "ask": "Our auditors start fieldwork on Monday and finish on 30 November. Record that their data tool gets read and export access to our agent's action stream for that window only, approved by our CFO.",
    "mcp_call": {
      "tool": "record_access_grant",
      "arguments": {
        "workspace_id": "opw_YOUR_WORKSPACE",
        "agent_label": "Audit firm fieldwork data tool (read-only)",
        "resource": "Rightshold stream opst_YOUR_STREAM (Agent action records)",
        "grantor": "CFO",
        "scope": "Read and export events in this stream only. No ingest or reconcile.",
        "valid_from": "2026-11-09T00:00:00Z",
        "expires_at": "2026-11-30T23:59:59Z"
      }
    },
    "also": [
      "Needs your owner account key. It's in the operations toolset (connect to /mcp?toolset=operations).",
      "This records the access. The credential that enforces it is POST /v1/operations/workspaces/{workspace_id}/credentials with scopes [\"read\", \"export\"] and expires_in_days.",
      "check_access_grant says whether the grant was in force at any moment, and revoke_access_grant records the end. verify_access_record is free and needs no account.",
      "record_action is how the agent's actions get into the stream in the first place."
    ],
    "scope": "Rightshold records the agent's events in a private, append-only stream, issues stream-scoped expiring credentials and review links, signs period statements and access records. It doesn't deliver tokens or links, vet who holds them or test the events against source documents. Agreeing scope, handing over access and the audit work itself are steps you and the auditor run around those records. Not audit or legal advice."
  },
  "sources": [
    {
      "title": "PCAOB: AS 1105, Audit Evidence (paragraphs .08 and .10)",
      "url": "https://pcaobus.org/oversight/standards/auditing-standards/details/AS1105"
    },
    {
      "title": "NIST SP 800-53 Rev. 5: AU-9(4), AU-9(6) and AC-2(2)",
      "url": "https://csrc.nist.gov/pubs/sp/800/53/r5/upd1/final"
    },
    {
      "title": "AWS IAM: Access to AWS accounts owned by third parties (external ID)",
      "url": "https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_common-scenarios_third-party.html"
    },
    {
      "title": "AWS IAM: Allows access within specific dates (aws:CurrentTime)",
      "url": "https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_examples_aws-dates.html"
    },
    {
      "title": "Agent access records on Rightshold",
      "url": "https://www.rightshold.com/agent-access"
    }
  ],
  "related": [
    {
      "title": "How a CPA can 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 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"
    },
    {
      "title": "How to answer a SOC 2 or ISO 27001 auditor's request for evidence of AI agent change control and access reviews",
      "url": "https://www.rightshold.com/answers/how-to-answer-a-soc-2-or-iso-27001-auditors-request-for-evidence-of-ai-agent-change-control-and-access-reviews"
    },
    {
      "title": "How to revoke an AI agent's access immediately",
      "url": "https://www.rightshold.com/answers/how-to-revoke-an-ai-agents-access-immediately"
    }
  ],
  "computed_from": "Curated guidance; license verdicts computed from Rightshold's license profiles at render time. Not legal advice.",
  "updated": "2026-11-08"
}