How to Require Authorization Before an AI Agent Executes an Action
The goal is not merely to ask an authorization service a question. The goal is to make the native side effect unreachable until the required Authorization has produced a Permit and that Permit has been verified for this execution attempt. The controlled sequence is:Action → Authority → Policy → Evaluation → Permit → Verification → Execution → Evidence
Never execute first and verify the Permit afterward.
Preferred pattern: guard the callback
Use a helper whose contract performs the AtlaSent authorization/verification path before invoking the protected function.Raw HTTP pattern
If you integrate without a guarded SDK helper, implement the boundary explicitly:permit object or an
obsolete verification endpoint.
Use Canon-backed Action Types
Do not invent a newaction_type for every tool string. AtlaSent separates:
- Action Type — canonical identity of the kind of Action;
- Action Instance — this specific occurrence;
- Action Class — organization-specific governance configuration for the Action Type;
- Target / Resource + Context — where tool-specific details belong.
agent.tool.invoke, and represent the particular tool/arguments in the
Target/Context according to the integration contract.
Framework wrappers
LangChain / LlamaIndex
A framework guard is useful only if it delegates to the real AtlaSent execution boundary. The wrapper itself is not the source of Authority and should not be the basis for a non-bypassability claim.MCP
MCP integrations can expose AtlaSent evaluation and Permit-verification tools. A system prompt that tells an agent to call those tools is not, by itself, a non-bypassable enforcement point. Place the Gate in the execution path that actually controls the native side effect.Direct SDK
Prefer an atomic/guarded helper such aswithPermit when the integration model
supports it. This reduces the chance that application code accidentally inserts
the side effect between Evaluation and Verification.
What each outcome means
- allow — the current Evaluation may issue a Permit; do not execute until the Permit passes required Verification.
- deny — no authorized execution.
- hold — required conditions/evidence are incomplete; no authorized execution yet.
- escalate — additional Authority/review/evidence is required; no authorized execution yet.
Enforced versus shadow/advisory
Enforced permit-gated path
When the selected integration is configured and accepted as fail-closed, the native effect cannot proceed through that governed path when Evaluation, Verification, binding, expiry, replay, or required evidence checks fail.Shadow/advisory path
AtlaSent evaluates and records without claiming that the native effect is being blocked. Use this mode to validate mappings, Policy, Authority, and operational behavior before enforcement. Do not describe shadow mode as fail-closed enforcement.Evidence after execution
Anallow Decision or successfully verified Permit does not prove the native
action happened. Preserve/correlate execution evidence so an independent reviewer
can answer:
- what Action was proposed;
- which Actor / execution principal attempted it;
- on whose behalf it acted;
- what organizational Authority and Policy applied;
- what Decision was returned;
- which Permit was issued and verified;
- what native execution/result occurred;
- whether it matched the authorized Action and Context.
Failure posture checklist
Before calling a path “fail-closed,” verify that:- the side effect is actually behind the AtlaSent Gate;
- network/API failure prevents the guarded callback/path from executing;
- non-allow Decisions do not reach the side effect;
- missing/expired/replayed/mismatched Permits fail Verification;
- no alternate unguarded path can reach the same effect within the claimed topology;
- break-glass behavior, if any, is explicit and evidenced.