---
id: CAP-PFM-LLM-016
title: Inspect captured AI content with a live access grant
feature: FEAT-PFM-LLM-05
product_area: platform
module: llm
revision: 1
status: draft
product_intent: proposed
implementation_evidence: partially-observed
supersedes: []
source_sha:
  services-platform: ad3f6a6582843008ed0f5a17b131878d15829af1
  react-console: baf6dae382d6f41dce976c7f848667ccc37e076f
intent_sources:
  - 'services-platform:docs/proposals/llm-observability/11-decisions.md#D-1'
purpose: Constrain sensitive diagnostic reads to accountable staff access.
outcomes:
  - Captured bodies require evidence permission and a live workspace access grant.
  - Successful reads and missing-grant refusals receive audit records.
  - Unavailable captured content has an explicit status.
concepts:
  - CON-PFM-LLM-001
actors:
  - ACT-PFM-004
surfaces:
  - api
  - console
preconditions:
  - The reader holds an active approved or emergency workspace access grant.
postconditions:
  - Successful content reads and missing-grant refusals receive audit entries.
permissions:
  - key: hq.llm-usage.read-evidence
    where_checked: api
    scope: record
  - key: hq.llm-usage.read-evidence
    where_checked: console
    scope: global
rules:
  - id: BR-CAP-PFM-LLM-016-01
    proved_by: [ATS-PFM-LLM-011-13, ATS-PFM-LLM-016-01, ATS-PFM-LLM-016-06, TST-PFM-LLM-024, TST-PFM-LLM-073]
    statement: >-
      Content reads require the sensitive HQ content key plus an active approved or emergency organization
      access grant inside its window; standing grants do not qualify.
    kind: permission
    enforced_at:
      - api
      - service
    must_prove: true
    provenance: observed
    source: 'services-platform:modules/llm/services/evidence/evidence-access.ts'
    origin: none
  - id: BR-CAP-PFM-LLM-016-02
    proved_by: [ATS-PFM-LLM-016-01, TST-PFM-LLM-024]
    statement: A read after the access window expires is refused and records the missing eligible access.
    kind: permission
    enforced_at:
      - service
    must_prove: true
    provenance: test
    source: >-
      services-platform:modules/llm/tests/integration/services/evidence/evidence-access.integration.spec.js#refuses
      the holder once the grant’s window has closed, and records the refusal
    origin: none
  - id: BR-CAP-PFM-LLM-016-03
    proved_by: [ATS-PFM-LLM-016-02, TST-PFM-LLM-024]
    statement: >-
      The content service audits missing-grant refusals and successful body or status answers before returning
      content, but route rejections, missing records and storage failures do not get that entry.
    kind: invariant
    enforced_at:
      - service
    must_prove: true
    provenance: observed
    source: 'services-platform:modules/llm/services/evidence/evidence-access.ts:readInvocationEvidence'
    origin: none
  - id: BR-CAP-PFM-LLM-016-04
    proved_by: [ATS-PFM-LLM-004-06, ATS-PFM-LLM-016-03, TST-PFM-LLM-024]
    statement: >-
      The read returns redacted request or response content or a skipped, failed or purged status, including
      purged when the object has disappeared, without its storage location.
    kind: policy
    enforced_at:
      - service
    must_prove: true
    provenance: observed
    source: 'services-platform:modules/llm/services/evidence/evidence-access.ts'
    origin: none
  - id: BR-CAP-PFM-LLM-016-05
    proved_by: [ATS-PFM-LLM-016-04, TST-PFM-LLM-024]
    statement: >-
      With an eligible grant, missing or foreign requests return not found without auditing; nonexistent
      organizations return not found before checking access grants.
    kind: validation
    enforced_at:
      - service
    must_prove: true
    provenance: observed
    source: 'services-platform:modules/llm/services/evidence/evidence-access.ts'
    origin: none
  - id: BR-CAP-PFM-LLM-016-06
    proved_by: [ATS-PFM-LLM-016-05, TST-PFM-LLM-054]
    statement: >-
      HQ reader policies exclude the sensitive content key, and the console grants it only to the
      administrator among HQ roles.
    kind: permission
    enforced_at:
      - console
    must_prove: true
    provenance: observed
    source: 'react-console:lib/hq/staff-roles.ts'
    origin: none
  - id: BR-CAP-PFM-LLM-016-07
    proved_by: []
    statement: 'Support readers see capture status without read buttons, while administrators see disabled read buttons.'
    kind: permission
    enforced_at:
      - console
    must_prove: false
    provenance: test
    source: >-
      react-console:e2e/mock/hq-ai-usage.mock.spec.ts#a Support Representative sees evidence statuses but no
      read buttons
    origin: none
scenarios:
  - id: SC-CAP-PFM-LLM-016-01
    given: A reader has a valid evidence access grant.
    when: The reader fetches captured bodies twice.
    then: Each successful read produces its own audit entry linked to the grant.
    provenance: test
    source: >-
      services-platform:modules/llm/tests/integration/services/evidence/evidence-access.integration.spec.js#writes
      a second row for a second read of the same body, so two reads are two rows
edge_cases: []
constraints:
  - The content viewer is incomplete and lacks an HTTP end-to-end test.
depends_on:
  - CAP-PFM-LLM-004
related:
  - CAP-PFM-LLM-011
journeys: []
open_questions: []
evidence:
  - >-
    services-platform at ad3f6a6582843008ed0f5a17b131878d15829af1: docs/llm.md (Reading a body, and what
    deletes it); docs/compliance/exceptions.md (EX-AI-002); aws/api/llm-usage.routes.ts
    (getHqTenantLlmUsageInvocationEvidence); aws/platform.service.ts (HQ_LLM_USAGE_PERMISSIONS.ReadEvidence);
    services/evidence/evidence-access.ts, evidence-store.ts; tests
    integration/services/evidence/evidence-access.integration.spec.js,
    unit/services/evidence/evidence-access.spec.ts, unit/aws/api/llm-usage-permissions.spec.ts.
  - >-
    react-console at baf6dae382d6f41dce976c7f848667ccc37e076f:
    components/console/hq/ai-usage/request/evidence-card.tsx; e2e/mock/hq-ai-usage.mock.spec.ts.
controls: [TC-AZ-001, TC-AZ-002, TC-AZ-003, TC-AZ-004, TC-AZ-005, TC-DAT-001, TC-DAT-003, TC-DAT-004, TC-IAM-003, TC-LOG-001, TC-LOG-002, TC-LOG-003, TC-LOG-004, TC-LOG-005, TC-PI-001, TC-PI-005, TC-TEN-001, TC-TEN-002, TC-TEN-003, TC-VEN-001, TC-VEN-002, TC-VEN-003]
exercised_by: [FAS-PFM-LLM-05-01, FAS-PFM-LLM-05-04]
suites: [TST-PFM-LLM-024, TST-PFM-LLM-054, TST-PFM-LLM-073]
---

# Inspect captured AI content with a live access grant

## Purpose

Constrain sensitive diagnostic reads to accountable staff access.

## How It Works

A staff member needs both the sensitive content-reading key and an eligible live access grant. Platform resolves the organization and checks the grant before looking up the request. Missing eligible access produces an audited refusal. With access, the service returns the redacted body or its unavailable capture status. It records successful body and status returns before returning them to the caller. Missing records and store failures follow narrower audit paths than successful reads. Ordinary usage readers cannot open content through their read key. The console currently displays capture status and keeps administrator read controls disabled.

## Relationships

- Retain redacted AI evidence and remove it safely supplies the prerequisite behavior for this outcome.
