The Arcjet Platform: Ingest, Observe, Enforce, and Audit

Ingest, observe, enforce, and audit: how Arcjet finds your agents and decides every action.

7 min read
In short: Arcjet is an AI agent runtime security platform that works in four stages: it ingests agent activity from hooks, SDKs, discovery, compliance APIs, and OpenTelemetry; observes and inventories it; enforces policy through one Rego policy engine; and sends every decision to audit destinations.

What is the Arcjet platform?

Arcjet is an AI agent runtime security platform. It finds the AI agents that run in your organization, records what they do, enforces policy on their prompts and tool calls, and keeps the decision evidence for audit. Arcjet works in four stages: ingest, observe, enforce, and audit. One policy engine, written in Rego, decides every enforced action and returns allow, hold, or block.

Arcjet covers three kinds of agent: coding agents such as Claude Code, Codex, and Cursor, custom agents that you build with the Arcjet SDKs, and agents that already run without your knowledge. The same platform also protects public web applications from bots and automated abuse.

Ingest
  • Coding agentsClaude Code, Codex, Cursor, and more
  • SDKs for custom agentsJavaScript, Python, and Go
  • Shadow AI discoveryEndpoint and device network analysis
  • Provider compliance APIsLLM activity audit logging
  • OpenTelemetryAgent traces, no code changes
Observe
  • AI discoveryFind every agent that's running
  • Activity captureTrack and log all activity
  • Behavior analysisMonitor for changes over time
  • Threat monitoringReal-time detection, such as malware
  • GovernanceLink agents to owners
Enforce
  • Managed detectorsPrompt injection, PII, and secrets
  • Agent guardrailsControl tool, MCP, and API access
  • Threat analysisThird-party API and MCP monitoring
  • Public web protectionBots, automation, and AI WAF
  • Content moderationGenerative media policies
Policy engineOPA · Rego
  • Allow
  • Hold
  • Block
Audit
  • Arcjet ConsoleAgent mapping and inventory
  • MCP server and APIManage your policies
  • SIEM log streamingSplunk, Datadog, Panther, and more
  • Analytics warehouseArcjet cloud or custom storage
Arcjet ingests agent activity from five kinds of source, observes it, enforces policy through one Rego policy engine, and sends every decision to audit destinations.

Ingest: where Arcjet gets agent activity

The ingest stage is how agent activity reaches Arcjet. Arcjet accepts five kinds of source. Two of them sit in the path of an action and can stop it. The other three report activity after it happens, so they record and discover but can't block.

SourceWhat it collectsCan it block an action?
Coding agent hooks

Every lifecycle event that Claude Code, Codex, Cursor, and other coding agents fire, including prompts and tool calls, with no SDK to install

Yes, on prompts and tool calls, because the agent asks before it acts

SDKs for custom agents

Tool calls, prompts, and application actions in agents that you build with the JavaScript, Python, or Go SDK

Yes, through a guard() call before the side effect

Shadow AI discovery

AI tools in use on endpoints and devices, found through network analysis

No, discovery only
Provider compliance APIs

LLM activity logs from providers such as the Claude Compliance API, polled read-only

No, record only
OpenTelemetry

Agent traces and logs sent to Arcjet's OTLP endpoint, with no code changes

No, record only

Start with the record-only sources to learn what's running, then add hooks or the SDK where you need enforcement. For more information about each source, see the Arcjet observe documentation.

Observe: what Arcjet does with agent activity

The observe stage turns raw agent events into an inventory and a history. Arcjet records every ingested event, including events that no policy evaluates. The observe stage includes the following capabilities:

  • AI discovery finds the agents that run in your organization, including agents that nobody registered.
  • Activity capture logs prompts, tool calls, and other lifecycle events for each agent session.
  • Behavior analysis tracks how an agent's activity changes over time.
  • Threat monitoring detects threats in real time, such as malware.
  • Governance links each agent to the person or team that owns it.

Observation answers "which agents run here, who owns them, and what did they do?" It's the input you need before you write a policy, because a policy that blocks an unknown workflow causes outages.

Enforce: how Arcjet controls agent actions

The enforce stage applies controls at the points where an action can still be stopped. Arcjet groups its enforcement controls into five areas:

  • Managed detectors screen text for prompt injection, personally identifiable information (PII), and secrets.
  • Agent guardrails control which tools, MCP servers, and APIs an agent can use, and with which arguments.
  • Threat analysis monitors the third-party APIs and MCP servers that an agent calls.
  • Public web protection stops bots and automated abuse on your web applications, with the Arcjet Shield WAF.
  • Content moderation applies policies to generated text and media.

Each control runs before the side effect. A coding agent hook adjudicates a tool call before the agent runs it. An SDK guard() call adjudicates an action before your code runs it. A control that runs after the action can record a violation, but it can't undo one. For more information about where to place controls, see AI agent security architecture.

How does the Arcjet policy engine decide?

The Arcjet policy engine evaluates every enforced action against the policies that you publish. Policies are written in Rego, the language of the Open Policy Agent (OPA) project, under a restricted Arcjet profile.

A decision has one of three outcomes:

  • Allow: the action proceeds.
  • Hold: the action waits for human review or approval.
  • Block: the action doesn't run, and the agent receives the IDs of the rules that denied it.

When several policies apply to the same action, Arcjet runs all of them and returns the most restrictive result. Every rule can run in dry run first, so you can see what it would block against real traffic before it blocks anything. A policy that Arcjet can't read fails closed and denies the action.

Audit: where Arcjet decisions go

The audit stage keeps the evidence of what each agent did and what Arcjet decided. Every decision and every recorded event is available through the following destinations:

  • Arcjet Console: agent mapping, inventory, and the activity feed for each agent.
  • MCP server and API: manage policies and query decisions from your own tools or from a coding agent.
  • SIEM log streaming: send decisions to Splunk, Datadog, Panther, and other SIEM tools.
  • Analytics warehouse: store decisions in Arcjet cloud or in your own storage, with custom or zero data retention policies.

Audit records preserve the rule IDs that matched, so a reviewer can trace a blocked action to the exact policy that blocked it. For more information about the evidence that auditors ask for, see compliance evidence for AI agents.

How do you roll out the Arcjet platform?

Roll out Arcjet in the same order as the pipeline, so that each stage has the data it needs:

  1. Connect a record-only source, such as OpenTelemetry or a provider compliance API, to find the agents that already run.
  2. In the Arcjet Console, review the agent inventory and assign an owner to each agent.
  3. Install coding agent hooks, or add a guard() call to your custom agent, at each action you want to control.
  4. Publish a policy with its rules in dry run, and compare its decisions with real activity.
  5. Promote the rules that behave as expected from dry run to live.
  6. Stream decisions to your SIEM or analytics warehouse so that your security team can investigate them.

What Arcjet doesn't do

Arcjet enforces policy only where an agent asks before it acts. Activity from OpenTelemetry, provider compliance APIs, and shadow AI discovery arrives after the fact, so those sources can't stop an action.

Coding agents such as Claude Code fail open when a hook is slow or unreachable, so enforcement strength depends on Arcjet's availability and latency. In custom agents, your application chooses which policy to call and which actor identity to send, and Arcjet doesn't verify that your code runs the action only after Arcjet allows it. For more information about runtime controls, see AI agent runtime security.

Frequently asked questions

Which Arcjet sources can block an AI agent action?

Coding agent hooks and the Arcjet SDKs can block an action, because the agent or your code asks Arcjet before the action runs. OpenTelemetry, provider compliance APIs, and shadow AI discovery report activity after it happens, so they record and discover agents but can't block.

What policy language does Arcjet use?

Arcjet policies are written in Rego, the Open Policy Agent (OPA) language, under a restricted Arcjet profile. Arcjet compiles each policy and refuses to publish it unless the edge interpreter reproduces OPA's answers for the policy's stored tests.

What happens when several Arcjet policies apply to one action?

Arcjet runs every policy attached to the action and returns the most restrictive decision. Each policy records its own decision, so the audit trail shows which policy and which rule IDs blocked the action.

Do I need to change code to use Arcjet with coding agents?

No. Claude Code, Codex, Cursor, and other coding agents already fire hooks, and Arcjet adjudicates prompts and tool calls from those hooks. Where the agent supports managed settings, an administrator can push and lock the hook configuration, so enforcement installs by configuration alone.

AI runtime security in your code

Protect your AI agent workflows with Arcjet

Arcjet guards run inside the tool, so the allow or deny arrives before the side effect rather than after it.