Identity

Identity, authorization, and audit

On Context, people and agents are both principals anchored to your identity provider. Every action an agent proposes is authorized against policy before it runs, credentials are brokered at runtime rather than stored in prompts, and the whole sequence lands in an append-only audit trail.

Identity for people and agents

People sign in to Context through your identity provider — the platform integrates with Okta and Entra ID — so joiners, movers, and leavers are governed where you already govern them. Agents work the same way. Every agent carries its own identity as a first-class principal: no shared service accounts, no standing secrets.

When a run starts, Context binds it to three things: the agent, the requester, and the policy. An agent's permissions derive from the humans and teams it acts for.

The agent
A principal of its own — never a shared service account
The requester
The person or team whose work the run carries out
The policy
Inherited from your IdP — Okta or Entra ID

Context runs in production inside a full VPC deployment with SSO-scoped permissions.

Tenant isolation

Isolation between tenants is enforced where the data is read, not after. Your organization is a predicate bound into the query itself, so a row from another tenant is never fetched and then filtered away — it is never a candidate result in the first place. The distinction matters: a post-filter is one forgotten clause away from leaking; an in-query predicate has to be defeated at the source to fail.

Membership resolves the same way for projects and channels: through one group closure rather than a patchwork of per-surface checks. Access to a project and access to a channel are answered by the same resolution, so there is a single place to reason about who can see what.

Workspaces are public, private, or personal, and the visibility is the boundary: an administrator role confers nothing inside a personal workspace. Admin is not a skeleton key. All of this is identical across the four deployment topologies — managed, your VPC, on-premises, and air-gapped run the same isolation, not a stricter or looser variant per model.

Tenant boundary
Organization is a predicate inside the query, not a post-filter
Membership
Projects and channels resolve through one group closure
Personal workspaces
Private by visibility — an admin role confers nothing inside them

Per-action authorization

Authorization on Context is evaluated per action, not per session. Before a credential is issued for any tool call, policy checks the resource, the action, the purpose, and the approval state. The rules are declarative and evaluated on every call — deny by default, approve by exception — rather than reviewed after the fact in a log.

Read access, write access, and human approval are configured separately. A workflow can read broadly and still require a named person to approve every change it proposes; the approval step is part of the authorization state.

Each decision runs in one order: deny, then allow, then refuse. The default is denial; an explicit rule allows; and a refusal can still override an allow. The specific resource is bound into the decision, not just its type — the check is "may this principal take this action on this object", never "may this principal act on objects like this".

The bug class we actively hunt is the confused deputy: every check passes, and the wrong tenant's object comes back anyway. Binding the resource into the decision is what closes it, because the object itself is part of what was authorized. And the same code path runs whether or not a control is shared — a shared resource is not a second, looser branch to get wrong, it is the same decision with a different membership answer.

Credential brokering

Agents do not hold credentials. A runbook never contains a password, an API key, or a token; credentials are brokered to the connector at runtime, used for the action, and never written into the prompt. Depending on the target system and your deployment, the connector uses delegated user identity or a scoped service identity.

Minted
Per task, at run time — scoped to the action
Expires
At completion — no standing secrets
Recorded
Grants and denials stay attached to the run

Credential storage, rotation, and revocation are reviewed as part of the deployment design.

Context narrows and brokers access; the destination system remains the final enforcement point. Your database's permissions still apply to every query an agent makes.

Audit trail

Every run produces a record of the task, the model and tool calls it made, the sources it referenced, the actions it took, the approvals it received, and the result. A reviewer can inspect the sequence and compare the output with the rubric it was scored against.

The trail is append-only, and it includes the authorization layer itself: every grant and every denial is logged with the identity, the task, and the rule that decided it. The record shows not only what an agent did but what it asked to do and was refused.

Export and retention requirements differ by regulator and by customer, so both are configured for your deployment.

Developer devices: pairing and revocation

The same identity discipline extends to the terminal. When a developer runs context-code, login prints a pairing code and an approval link; approving it in the workspace provisions the CLI's agent and mints a key named after the device. Nothing is pasted into the terminal.

Each device holds its own named key, and each key can be revoked on its own — a lost laptop is a single revocation.

Request documentation

The document library covers audit reports, assessments, and procurement paperwork. Request what your review needs; anything that requires an NDA is shared once it is in place.

security@context.ai

Also documented: Deployment models · Data handling · Compliance program

Request access

Tell us who you are and what your review needs.

Resources