Concepts / Designing for Compliance Reviews

Designing for Compliance Reviews

A complete audit log is not sufficient for compliance if its entries cannot identify the human responsible for each read.

  • Programming

A Log That Records Everything

When a team builds an internal AI agent that reads documents on behalf of employees, one of the first decisions is how the agent should authenticate to the systems it touches. A common shortcut is to give the agent a single service account that every user shares. It is simple to set up, it needs no per-person configuration, and it appears to give the organization a complete log of what the agent accessed.

What do you think happens?

Suppose every agent read is logged under one shared service account, and the log is complete, searchable, and timestamped. Does that satisfy a requirement that every read of material non-public information must tie back to the human responsible for it?

  • Yes, because every action is recorded

  • No, because the record does not name the responsible person

Reveal answer
Answer:

No, because the record does not name the responsible person

The logs exist and they are complete in the sense that each action is recorded, but the question an auditor asks for this kind of read is whether the read can be tied to the human who was responsible for it. A shared account cannot answer that question.

This lesson examines why that shortcut can fail a compliance review, what a stronger design looks like, and why the decision is easier to get right when compliance people are involved from the start. The belief to challenge is simple: if every agent action is logged under one shared account, the organization has an adequate audit trail. For many purposes that is a reasonable starting point. For reads of material non-public information it is not enough.

What the Requirement Actually Demands

Definition

A complete audit log is not sufficient for compliance if its entries cannot identify the human responsible for each read.

The compliance requirement for material non-public information is that every read event must tie back to the human responsible for it. It is worth reading that sentence carefully, because it demands less than it might seem to. It does not say the system must avoid reading sensitive material. It does not say the agent must be forbidden from summarizing notes. It says that when a read occurs, the record must make it possible to name the responsible person. Design decisions are judged against that test, not against a general wish for more logging.

Key point

The test is about attribution, not coverage. A system can log every action it performs and still fail the test if none of those entries can be connected to a person.

Following a Read to a Person

Think of a single read as a chain. At one end is the analyst who asked for a summary. In the middle is the agent, which performs the read. At the far end is the audit entry the auditor will eventually examine. For the requirement to hold, the chain must stay unbroken from the analyst all the way to that entry. The diagram below shows the chain the auditor needs. The read is performed by the agent, but the identity carried through the agent should be the analyst's own, so that the audit entry points at a person.

Analystrequests the summaryAgentperforms the readAgent identityanalyst's own identitycarried throughDocument storematerial non-public notesAudit entryidentity names the analystAccess controlssame as analyst loginasks for summaryacts underchecked againstpermits readread recorded as
How does a single read event link through the agent, the identity it carries, and the access controls to the specific person who requested it?

Read the chain from the bottom up, as an auditor would. The audit entry must name a person. If it names the agent identity, the chain holds only if that identity is the analyst's own. If it names a shared account, the chain has been cut at the identity step, and no amount of additional logging downstream repairs it. The requirement is about the link between the person and the read, and the identity carried through the agent is where that link is made or lost.

Why the Shared Account Fails

Once the requirement is stated as an attribution test, the shared account fails for a structural reason rather than a technical one. The agent is performing the read, but the agent is not the responsible party. The analyst who asked for the summary is the responsible party. If the only identity visible in the record is the shared account, the chain between the analyst and the read has been cut. Nothing about the logging is broken. The record simply has no field that points at the person.

PropertyComplete log under a shared accountLog entry that names the responsible human
Records the action takenYesYes
Records the time of the readYesYes
Records which document was readYesYes
Identifies the responsible personNoYes
Satisfies the tie-back requirement for MNPI readsNoYes

Both kinds of entry are complete in time and action. Only the second can answer the auditor's question.

Key point

The shared account does not fail because it is inaccurate. It fails because it is a correct record of the wrong party.

Restoring the Link with a Per-Analyst Identity

The fix described in the source gave the agent a per-analyst identity. Each analyst's agent identity was scoped to that analyst's coverage universe, meaning the set of securities and research the analyst is responsible for. Crucially, the agent identity carried the same access controls as the analyst's own login. The agent therefore could not reach anything the analyst could not already reach, and every read it performed could be attributed to a specific person. The change restores attribution without expanding what the agent can reach.

Before
Audit entry
  action: read
  document: research note 14
  identity: shared-agent-account
  responsible person: cannot be determined

Every agent read is recorded under one account that many people use.

After
Audit entry
  action: read
  document: research note 14
  identity: analyst's own agent identity
  responsible person: the analyst who requested the summary

Each read is recorded under an identity that belongs to exactly one person.

Identity fieldshared service accountIdentity fieldanalyst's own agentidentityResponsible personcannot be recoveredResponsible personthe requesting analystchain cutchain intact
What does the audit log record for the same read under a shared service account, and how does that change when each user has their own agent identity?

The two designs have the same analyst, asking for the same summaries. What changes is which identity the system records when the read occurs. The per-analyst design moves attribution from an account that many people share to an identity that belongs to exactly one person. That single change is what restores the link the requirement depends on. Notice too that the access controls did not become more permissive. The agent identity inherits the analyst's controls, so the new attribution comes with no widening of reach.

Worked example

Tracing one read under the per-analyst design

An analyst covering a particular set of securities asks the agent to summarize a set of notes that contain material non-public information. Trace what must be true for the resulting audit entry to satisfy the requirement.

  1. 1
    Identify the responsible party

    The analyst who asked for the summary is the responsible party. The agent performs the read but is not the responsible party.

  2. 2
    Check the agent identity

    The agent acts under an identity scoped to this analyst's coverage universe and carrying the same access controls as the analyst's login. This means the identity belongs to one person.

  3. 3
    Check reach

    If the analyst's login could not reach the notes, the agent identity cannot reach them either. The agent cannot widen access through this design.

  4. 4
    Check the audit entry

    The entry records the read under the analyst's own agent identity, so the chain from the analyst to the read is unbroken and the auditor can name the responsible person.

Result

The entry satisfies the requirement because it ties the read to a specific person, and the agent gained no access the analyst did not already have.

Mistakes Teams Make With Agent Identity

  • Common mistake

    Assuming complete logging is enough

    What it looks like

    A team confirms that every agent action appears in the log and treats the audit question as settled.

    Why it fails

    For reads of material non-public information the auditor asks whether the read can be tied to the responsible human, not whether it was recorded.

    Do this instead

    Check each entry for a field that identifies the person, not only for coverage of actions.

  • Common mistake

    Giving the agent broader access to make attribution easier

    What it looks like

    A team gives a per-analyst agent identity wider permissions than the analyst's own login so that it can reach shared folders.

    Why it fails

    The source design works because the agent identity carries the same access controls as the analyst's login. Broader access expands what the agent can reach.

    Do this instead

    Scope each agent identity to the analyst's coverage universe and give it the same access controls as the analyst's login.

  • Common mistake

    Treating the requirement as a ban on sensitive reads

    What it looks like

    A team concludes that the agent must not read sensitive notes at all and removes that capability.

    Why it fails

    The requirement does not forbid reading sensitive material. It requires that each read can be tied back to the responsible person.

    Do this instead

    Keep the capability and make the record attributable.

  • Common mistake

    Deferring the identity decision until the system is nearly finished

Bringing Compliance In at Design Time

The source scenario also shows a process lesson. The customer's CISO rejected the shared-account architecture in a single thirty-minute conversation. The team then spent two weeks reworking identity, and the deployment still shipped on schedule. The schedule held because the forward deployed engineer pulled the CISO into the design review in week one, instead of waiting for the validation review in week eight.

Week oneCISO joins design reviewTwo weeks of identityreworkon an early designWeek eightvalidation reviewTwo weeks of identityreworkon a nearly finished systemTen months inproductionSEC inquiry needs auditevidenceobjection raised earlyobjection raised lateaudit trail later evidenced
At which points in the design lifecycle does a compliance concern get raised, and how does raising it early avoid rework compared with raising it after build?

Had the objection surfaced at week eight, the same two weeks of identity work would have landed on a nearly finished system, and the rework would have threatened the delivery date. Raising the compliance concern at the design stage turned a late, expensive change into an early, cheap one. The source also reports that the two weeks of identity work paid for themselves later, when the compliance team had to evidence the audit trail for an SEC inquiry, by which point the agent had been in production for ten months.

Best practice

Put compliance stakeholders in the design review in week one, before the authentication design is fixed. The same change costs far less at that point than after the system is built around it.

Practice: Auditing an Entry

MEDIUM

An internal agent logs every read under one service account named shared-agent. An auditor asks which analyst requested a particular read of a set of notes containing material non-public information. Explain why the log cannot answer the question, describe the single design change that would let it answer, and state what must remain true about the agent's access so that the change does not widen what the agent can reach.

Hints
  • Ask which field in the entry is supposed to point at the responsible person.
  • Think about which identity the record should carry for each read.
  • The access controls of the new identity should match the analyst's own login.

Key Takeaways

  • A complete audit log is not sufficient for compliance if its entries cannot identify the human responsible for each read.
  • For material non-public information, every read event must tie back to the responsible person, so a shared service account fails even though it records activity.
  • A per-analyst agent identity, scoped to the analyst's coverage universe and carrying the same access controls as the analyst's login, restores attribution without expanding what the agent can reach.
  • Bringing compliance stakeholders into the design review in week one rather than week eight keeps identity and audit changes inexpensive.