Delegated authority, running locally: Give an agent on your machine an identity you can trust 1Password published a reference architecture for giving locally running AI agents a trustworthy, scoped, short-lived, auditable identity without storing long-lived keys on disk. The architecture targets the 'delegated authority, running locally' cell of the 3x2 agent identity taxonomy, covering coding assistants, browser copilots, and desktop AI helpers. It aims to eliminate long-lived credentials, produce attribution-complete audit records, and maintain strict development/production trust boundaries, addressing the challenge of unattestable local processes. The second post in this series https://1password.com/blog/ai-agent-identity-architectures gave us a way to reason about agent identity: a 3x2 taxonomy along two axes. The Authority Model describes the authority under which the agent operates: delegated acting for a specific human , bounded operating within a fixed grant , or autonomous making unsupervised decisions across tasks . Deployment refers to whether the agent deployed locally or remotely. Each combination of authority model and deployment has its own set of requirements, worthy of a blog post describing the architecture. This is the first of those deep dives, and it covers the most common cell: delegated authority, running locally . It's the pattern behind the IDE coding assistant, the browser copilot, and the desktop AI helper. What follows is a reference architecture, not a new protocol. It defines no new tokens or wire formats. Its contribution is a coherent composition of existing and emerging open standards, plus a few constraints layered on top. It's also aspirational. This is the direction we believe the industry should move in, not a claim that anyone, including 1Password, has shipped it end-to-end. The architecture answers one narrow, hard question. How do you give an unattestable local process a trustworthy, scoped, short-lived, auditable identity without a long-lived agent key on disk? And it has to do that while satisfying the three requirements the last post set out https://1password.com/blog/ai-agent-identity-architectures , which cut across every architecture in this series and don't relax just because the agent is convenient: Eliminate long-lived credentials Produce attribution-complete audit records, every action traceable to a specific human and reconstructable from logs alone Maintain strict development/production trust boundaries While some patterns exist for these requirements in cloud-based environments, meeting them on a developer’s laptop is a harder challenge and requires the use of emerging protocols. Picture the moment a coding assistant is halfway through a task on a developer's laptop and decides it needs a production database credential to finish. The resource on the other end the database has to answer four questions before acting: which agent is this, who is it acting for, is it allowed to do this right now, and can we prove later that it happened? Delegated means the agent acts on behalf of a named human, the Subject, who remains the authorizing principal. Every action must be traceable back to that specific human. An agent that logs actions under a shared service account has failed delegation outright. If your audit trail points at "the assistant" without identifying the human, you have an anonymous proxy, not a delegated identity. Local means the agent runs on the end-user's device or inside a browser origin, under the user's OS account. This is a prevalent agent pattern in use today, which is why it deserves the first deep dive. In the scenario above, the relationship between this specific agent acting for this specific person right now is what the architecture has to make cryptographically legible to the resource server. A locally running agent lives in a weaker environment than a cloud workload, in three ways. Firstly, it isn't hardware-attested by default. A cloud platform can lean on a trusted execution environment TEE to assert "this exact binary, unmodified, is what's running." A typical consumer laptop offers no such guarantee. There’s no ambient proof of which process is asking, so no hardware-rooted attestation can be assumed. Second, secrets sit in a shared blast radius. Tokens and keys held by a local process live in memory that other same-user processes can read. Local credential theft, process injection, and memory scraping are well-known attacker techniques, so any secret the agent holds is accessible to the rest of the user’s session. Browser agents inherit an extra layer of exposure from origin-bound credential scoping, malicious extensions, service-worker interception, and DOM-based prompt injection, on top of everything above. However, there is a real advantage here: the human is physically present. A local delegated agent is almost always launched interactively by a user at the keyboard. This makes phishing-resistant human authentication, per-task consent, step-up re-authentication, things that are out of reach for unattended remote agents, practical. The present human is the strongest primitive the local environment offers, and the architecture leverages that. To keep the pieces organized, the architecture borrows a seven-function model of agent identity from a NIST concept paper https://www.nccoe.nist.gov/sites/default/files/2026-02/accelerating-the-adoption-of-software-and-ai-agent-identity-and-authorization-concept-paper.pdf : Identification, Credentials, Attestation, Provisioning, Authentication, Authorization, Monitoring. Each function below is realized by a specific, named, public mechanism. Those mechanisms are all standards a skeptical reader can go read: OAuth 2.0 and its Token Exchange extension RFC 8693 , OIDC, PKCE RFC 7636 , SPIFFE, WebAuthn/FIDO2, the emerging OAuth Transaction Tokens work, CAEP the Continuous Access Evaluation Profile , and the NIST guidance in SP 800-207 Zero Trust and SP 800-63. One principle carries over from the first post in the series https://1password.com/blog/agent-identity : Zero Trust policy must be applied in real time, as close as possible to each agent action, with as little human intervention as possible. Every enforcement decision happens at the moment of the action, not in advance. Because the agent process can't attest to itself, trust has to be rooted somewhere the agent is not. That somewhere is a separate, user-trusted, code-signed application acting as a local trust anchor , the Workload Identity Broker concept from the previous post for the local case. It’s already installed under the user's account and has a reason to hold keys securely. It does four things: Key custody. The anchor holds a device-bound key pair in the platform's secure key store: the Secure Enclave on Apple hardware, the TPM on Windows. The private key never leaves that store, and the agent holds no long-lived key at all. The durable cryptographic material lives with the anchor, not with the agent process. Enrollment . Once, at install time, the anchor enrolls its device public key with the authorization server in one of two tiers. Managed-device enrollment is backed by enterprise device management MDM , giving the server stronger assurance about which endpoint enrolled the anchor. User-anchored enrollment, the consumer and unmanaged case, bootstraps from the user's session and is weaker. The server knows the tier and applies stricter policy to the weaker one, with narrower scopes, and more frequent step-ups. Per-request attestation without special hardware. For every agent request, the anchor first verifies the calling process's OS code-signing identity: on macOS via the code-signing APIs plus the signing publisher's identity; on Windows via Authenticode plus the publisher. The operating system becomes the attestation authority, standing in for a TEE. Minting. Only after that check passes does the anchor issue a short-lived credential: a SPIFFE JWT-SVID a signed identity token for a workload , with a lifetime of ten minutes or less. It's signed with the anchor's device private key, whose public half was enrolled with the server, and handed to the agent over a narrow local IPC "workload API" that is end-to-end encrypted and mutually authenticated when it carries anything sensitive. The result is a transitive trust chain. The authorization server trusts the anchor established once, via enrollment → the anchor trusts the OS code-signing subsystem checked on every request → therefore the server can trust the agent transitively, without ever attesting it directly . The server verifies each SVID's signature against the anchor public key it enrolled at install time, so a token minted by anything other than the enrolled anchor fails verification. Every later function derives from this one relationship. This narrows the binary-attestation gap on consumer devices but it does not eliminate it. OS code-signing is a strong signal, not a hardware-rooted proof.We return to this in the limitations section below. Once a process is verified, it can be named: the Identification function, following directly from attestation. Each agent instance gets a stable workload identifier, expressed as a SPIFFE ID https://spiffe.io/docs/latest/spiffe-specs/spiffe-id/ . SPIFFE is an open standard for assigning verifiable identities to software workloads, which can include agents. Conceptually, it's structured as: spiffe://