You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/agents/claude-managed-agents.mdx
+32-22Lines changed: 32 additions & 22 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,13 +1,17 @@
1
1
---
2
-
title: "Anthropic Managed Agents"
3
-
description: "Use E2B as the sandbox runtime for Anthropic Managed Agents self-hosted environments."
2
+
title: "Claude Managed Agents"
3
+
description: "Use E2B as the sandbox runtime for Claude Managed Agents self-hosted environments."
4
4
icon: "/images/icons/claude-code.svg"
5
5
---
6
6
7
-
[Anthropic Managed Agents](https://platform.claude.com/docs/en/managed-agents/overview) can use a self-hosted environment when you want to run tool calls in your own infrastructure. E2B provides a reusable `E2B/claude-managed-agents-webhooks` template that receives Anthropic webhooks and routes each Managed Agents session to a persistent E2B worker sandbox.
7
+
[Claude Managed Agents](https://platform.claude.com/docs/en/managed-agents/overview) can use a self-hosted environment when you want tool calls to run in your own infrastructure. Claude runs the agentic loop and reasoning process; E2B provides isolated sandbox infrastructure for the environment where tool calls execute. The reusable `E2B/claude-managed-agents-webhooks` template receives webhooks and routes each Claude Managed Agents session to a persistent E2B worker sandbox.
8
8
9
9
<Info>
10
-
For the full source, local setup scripts, and app-owned routing examples, see the [Anthropic Managed Agents cookbook](https://github.com/e2b-dev/e2b-cookbook/tree/main/examples/anthropic-managed-agents).
10
+
This separation is intentional for security: Claude decides what work to do, while the sandbox contains the execution environment, filesystem, tools, network access, and runtime logs.
11
+
</Info>
12
+
13
+
<Info>
14
+
For the full source, local setup scripts, and app-owned routing examples, see the [Claude Managed Agents cookbook](https://github.com/e2b-dev/e2b-cookbook/tree/main/examples/anthropic-managed-agents).
11
15
</Info>
12
16
13
17
## Install dependencies
@@ -28,20 +32,20 @@ Export the values you will pass to the webhook sandbox:
28
32
# E2B dashboard API keys: https://e2b.dev/dashboard?tab=keys
29
33
export E2B_API_KEY="..."
30
34
31
-
#Anthropic Console API keys: https://console.anthropic.com/settings/keys
35
+
#Claude Console API keys: https://console.anthropic.com/settings/keys
# Open the self-hosted environment in the Anthropic Console and click Generate environment key.
41
+
# Open the self-hosted environment in the Claude Console and click Generate environment key.
38
42
export ANTHROPIC_ENVIRONMENT_KEY="..."
39
43
```
40
44
41
45
## Start the webhook sandbox
42
46
43
47
Start the public template with auto-resume enabled. The template starts a webhook server on port `8000`.
44
-
Because Anthropic only shows the webhook signing key after you register an endpoint, write the router config now and add the signing key to the same sandbox after registration.
48
+
Because the signing key only appears after you register a webhook endpoint, write the router config now and add the signing key to the same sandbox after registration.
45
49
46
50
<CodeGroup>
47
51
```typescript JavaScript & TypeScript
@@ -109,7 +113,7 @@ At this point `/health` returns `200`, but `/webhook` returns `503` until the si
109
113
110
114
## Register the webhook
111
115
112
-
In the [Anthropic Console webhooks settings](https://platform.claude.com/settings/workspaces/default/webhooks), create a webhook endpoint using the printed URL:
116
+
In the [Claude Console webhooks settings](https://platform.claude.com/settings/workspaces/default/webhooks), create a webhook endpoint using the printed URL:
113
117
114
118
```text
115
119
https://<sandbox-host>/webhook
@@ -143,25 +147,25 @@ sandbox.files.write(
143
147
```
144
148
</CodeGroup>
145
149
146
-
## Send work to the agent
150
+
## Run an end-to-end smoke test
147
151
148
-
Create or select a Managed Agents agent in the [Anthropic Console](https://platform.claude.com/workspaces/default/agents), then create a session with that agent and the same `ANTHROPIC_ENVIRONMENT_ID` you wrote into the webhook sandbox. Creating the session does not start work; the `user.message` event does.
152
+
Create or select a Claude Managed Agents agent in the [Claude Console](https://platform.claude.com/workspaces/default/agents), then create a session with that agent and the same `ANTHROPIC_ENVIRONMENT_ID` you wrote into the webhook sandbox. Creating the session does not start work; the `user.message` event does.
149
153
150
154
```bash
151
155
export ANTHROPIC_AGENT_ID="agent_..."
152
156
```
153
157
154
-
Use a small sandbox task for the first smoke test:
158
+
Use a small shell task for the first smoke test:
155
159
156
160
```text
157
161
Use bash to echo webhook-smoke-ok. Answer only with that text.
- Router logs showing `routing work` and `assigned session`.
263
273
- A session-to-sandbox assignment in the router's assignment store.
264
-
- The assigned worker sandbox's `worker.log` showing claimed work, tool execution, and successful results posted back to Anthropic.
265
-
- The Anthropic session returning to `session.status_idle`.
274
+
- The assigned worker sandbox's `worker.log` showing the shell tool execution and successful results posted back to Claude.
275
+
- The Claude Managed Agents session returning to `session.status_idle`.
266
276
267
277
The assignment store records the worker sandbox ID for each routed session. Connect to that sandbox and check `/opt/anthropic-managed-agents-js/worker.log` when you need the tool execution logs.
268
278
269
279
If the session stays at `requires_action`, check `/opt/anthropic-managed-agents-js/webhook.log` in the router sandbox first, then check `/opt/anthropic-managed-agents-js/worker.log` in the assigned worker sandbox. Stale environment keys, missing signing keys, archived sessions, and failed tool-result posts show up there.
270
280
271
281
## Runtime behavior
272
282
273
-
The worker runs with `/mnt/session` as its workdir. File tools are constrained to that workdir, skills are downloaded under `/mnt/session/skills/<name>/`, and generated artifacts should be written under `/mnt/session/outputs`.
283
+
The worker sandbox runs tool calls with `/mnt/session` as its workdir. File tools are constrained to that workdir, skills are downloaded under `/mnt/session/skills/<name>/`, and generated artifacts should be written under `/mnt/session/outputs`.
274
284
275
285
The webhook sandbox is the router. It keeps a session-to-sandbox assignment store and starts worker sandboxes with E2B auto-resume and pause-on-timeout settings.
276
286
277
287
## Session-scoped sandboxes
278
288
279
-
By default, the public webhook template gives each Managed Agents session its own E2B worker sandbox. Follow-up turns for the same session reconnect to the same worker and reuse its `/mnt/session` filesystem.
289
+
By default, the public webhook template gives each Claude Managed Agents session its own E2B worker sandbox. Follow-up turns for the same session reconnect to the same worker and reuse its `/mnt/session` filesystem. The sandbox is the isolated execution environment, not the place where Claude's reasoning loop runs.
280
290
281
291
Use [cloud buckets](/docs/storage/cloud-buckets), [Archil](/docs/storage/archil), or [volumes](/docs/volumes) when files need to outlive a sandbox or be shared across many sandboxes.
282
292
283
-
If you want to run that router in your own service instead of in E2B, use the cookbook's [`app-webhooks/` example](https://github.com/e2b-dev/e2b-cookbook/tree/main/examples/anthropic-managed-agents/javascript/app-webhooks). It receives Anthropic webhooks in your app, claims work there, and routes each session to its own E2B sandbox by default.
293
+
If you want to run that router in your own service instead of in E2B, use the cookbook's [`app-webhooks/` example](https://github.com/e2b-dev/e2b-cookbook/tree/main/examples/anthropic-managed-agents/javascript/app-webhooks). It receives webhooks in your app, claims work there, and routes each session to its own E2B sandbox by default.
284
294
285
295
## Clean up
286
296
287
-
Remove the webhook endpoint in the Anthropic Console before deleting the router sandbox. Then kill the router sandbox and any assigned worker sandboxes you no longer need.
297
+
Remove the webhook endpoint in the Claude Console before deleting the router sandbox. Then kill the router sandbox and any assigned worker sandboxes you no longer need.
0 commit comments