Skip to content
PaloNexus
Request access Request

The authorization model

PaloNexus connects every agent action to an accountable human or service owner, verifies that the delegation is valid, issues narrowly scoped runtime credentials, and enforces that authority when an agent calls a model, tool, API, sandbox, or another agent.

Agent runtimes decide how an agent works. Sandboxes decide where its code runs. PaloNexus decides what an agent is authorized to do and whose authority it is using. It is the authorization and accountability layer between agents and the systems they act upon — not a runtime, not a sandbox, not an agent framework.

Many systems can intercept a call — gateways, meshes, framework middleware. What makes a PaloNexus decision different is the authority graph it resolves before answering:

human identity
→ organizational role
→ ownership of resource/service
→ authority to delegate
→ agent identity
→ task mandate
→ permitted operation
→ target resource
→ time/risk/budget constraints
→ issued runtime credential
→ recorded action

Every allow is a statement that this whole chain held at the moment of the call: a real person (or service owner) with current authority delegated this agent, for this task, to perform this operation on this resource, within these constraints — and the decision, the credential it produced, and the outcome are recorded as one verifiable trail. Every deny is a link in that chain failing.

PillarWhat it guarantees
Accountable ownershipEvery production agent has an active accountable owner and an organizational sponsor.
Authority-bound delegationAn agent may receive only authority that an entitled human, group, or service owner is permitted to delegate.
Just-in-time accessNo standing enterprise credentials. Access is issued for one task, target, action set, and short time window.
Lifecycle-linked revocationHuman and organizational changes cascade immediately into agent access and ownership state.
Verifiable authority trailEvery action can be traced from the agent to the task, delegation, approver, policy, runtime credential, and target outcome.

Network enforcement, signed credentials, Decentralized Identifiers (DIDs), Verifiable Credentials (VCs), Open Policy Agent (OPA), Envoy, and Kubernetes are implementation mechanisms beneath these pillars — the how, not the product.

Authorization is only real if it is enforced where the action happens. PaloNexus is designed around three enforcement modes:

ModeHow it worksStatus
Governed toolPaloNexus hosts or wraps a tool; credentials never reach the agent.SDK governed-tool adapters (LangChain / LangGraph / Deep Agents) work today; a hosted tool gateway is planned.
Token exchangePaloNexus issues an ephemeral, scoped token to a trusted runtime component.The Security Token Service (STS) in agent-idp ships today (short-lived, audience-bound runtime credentials); downstream cloud/SaaS connectors are planned.
Egress gatewayThe agent makes an outbound request through PaloNexus, which authorizes it and injects credentials after the untrusted boundary.Shipped — today’s primary enforcement. The Kubernetes egress proxy/gateway below is one implementation of this mode.

Today’s shipped enforcement is mode 3 (the egress gateway) plus the SDK adapters; the Kubernetes forward-proxy/Envoy stack documented in Credential-Safe Action Enforcement is one implementation of it, not the product’s identity.

The decision service is one; the enforcement points are many. Kubernetes is one adapter, not the product:

PaloNexus authorization service
|
+-- SDK enforcement (LangChain / LangGraph / Deep Agents) works today
+-- API gateway enforcement (Envoy ext_authz) works today
+-- Kubernetes sidecar / service-mesh egress enforcement works today
+-- MCP gateway enforcement planned
+-- sandbox egress enforcement (Agent Sandbox, OpenAI) planned
+-- cloud credential broker planned

Working today: the SDK adapters, Envoy’s external-authorization hook (ext_authz, ingress and egress), and the Kubernetes network-layer egress enforcement. Planned, not yet built: the Model Context Protocol (MCP) gateway, dedicated sandbox-egress adapters, and the cloud credential broker.

Implementation mechanisms: one decision point

Section titled “Implementation mechanisms: one decision point”

Beneath the pillars sits a concrete decision engine. The trick is that six implementation concerns — gateway, identity, registry, policy, observability, and audit — all meet on a single question, answered at the control-plane component’s /authz endpoint: may this agent make this outbound call, on behalf of this human, for this task, right now? Every outbound action an agent takes — a model call, a tool call, or an agent→agent hop — is decided at that /authz, carrying the agent identity and the user it acts for. Identity, the registry, and policy converge to answer it; recording the answer is the authority trail; counting it is observability.

The same decision point also governs ingress: every north-south request asks the same /authzmay this caller reach this service? That inbound capability is the foundation egress is built on, not the headline.

MechanismWhat it is hereKubernetes object(s)
GatewayL7 edge routing; the enforcement point that routes every request through /authzGatewayClass / Gateway / HTTPRoute (Gateway API), implemented by Envoy Gateway + SecurityPolicy.extAuth
Identityhuman SSO via OpenID Connect (OIDC) JSON Web Tokens (JWTs) + agent identity (DID/VC is the supported credential format)Dex for human OIDC; agent-idp issues each agent a did:key under a did:web org anchor
Registrysource of truth for services, upstreams, scopes, agent allowlists, budgetscontrol-plane /v1/registry/services API
Policythe allow/deny decisioninline rules in the control plane + OPA for org-wide Rego (deny-overrides)
Observabilitymetrics + tracescontrol-plane /metrics; OpenTelemetry (OTel) Collector → Prometheus / Tempo / Loki (the Grafana LGTM observability bundle)
Auditthe verifiable authority trail (hash-chained, tamper-evident)hash-chained JSON records (/v1/audit)

Envoy’s HTTP ext_authz filter forwards each incoming request to /authz on the control plane’s decision listener (:9191). A 200 means allow (the gateway then routes to the upstream); a 403 means deny. Inside /authz (internal/authz/authz.go), the six concerns meet in order:

identity verify the bearer token (who)
registry resolve the target service (what)
policy inline rules + OPA veto (may they)
audit hash-chained record (prove it)
metrics decision counter + latency (observe it)

On an allow, the control plane stamps X-Palonexus-Subject and X-Palonexus-Upstream response headers; the gateway forwards those so upstreams trust the edge and never re-parse the raw token. See Headers for the full set.

A request that carries the X-Palonexus-Actor header is treated as an agent egress call and takes the egress decision path — the headline case; everything else is ordinary north-south ingress, the foundation it is built on.

agent ──egress──▶ egress proxy ──▶ /authz ──▶ model broker / tool / peer agent
│ egress: actor + on-behalf-of + task
│ + allowlist + budget + delegation + OPA
client ──HTTP──▶ Envoy Gateway ──ext_authz──▶ /authz ──▶ upstream (apps)
│ ingress: who / what / may
  • Egress answers may THIS agent, acting for THIS user on THIS task, reach THIS target right now? — it resolves both the calling agent and the target from the registry, then runs an allowlist → budget → delegation (task-based access control, TBAC) → OPA decision. Agent identity is proven cryptographically (a Verifiable Presentation), not taken from a header. See Credential-Safe Action Enforcement and Agent identity & credentials.
  • Ingress answers may this user/client reach this service? — identity → registry → policy. It is the same /authz, and the foundation egress builds on.
  • Deny-by-default / fail-closed. Unknown service, invalid token, target not in the agent’s allowlist, over budget, missing delegation, or an unreachable OPA all deny. Policy is deny-overrides: an inline allow plus an OPA deny is a deny.
  • Identity propagation, not token forwarding. Upstreams trust the edge; they read the stamped subject/actor headers and never re-parse tokens.
  • Verifiable authority trail. Each record hash-chains to its predecessor, so editing or deleting an entry breaks the chain — tamper-evident, verifiable by recomputation.
  • Same image everywhere. All configuration is environment-driven; only the Kustomize overlay changes between dev and prod. See Environment variables.