mirror of
https://github.com/anthropics/skills.git
synced 2026-08-02 13:05:28 +08:00
1f630fdf92
Syncs the claude-api skill with the current upstream source.
## Managed Agents — five new features
- `effort` on the agent's `model` object (a level string or `{"type": "<level>"}`).
It is agent-configuration only: setting it in a per-session `model` override is
silently ignored.
- Optional `version` on agent update, for optimistic concurrency. Omit it for
last-write-wins.
- `initial_events` on session create, collapsing create plus first send into one
call. Validation is all-or-nothing and only `user.message` and
`user.define_outcome` are accepted.
- Environment and memory-store webhooks: four `environment.*` events and three
`memory_store.*` events.
- Event deltas on per-thread streams. Previews are thread-scoped, so a child
thread's previews never reach the session-level stream.
## Corrections to behavior the skill already documented
- Tool output offload triggers at 100,000 characters (~25k tokens), not 100K
tokens, and covers built-in tools rather than MCP alone.
- `system.message` works on four models, checks only the primary model, appends
system context instead of replacing the prompt, and is accepted during a
`requires_action` idle when it trails a tool result in the same request.
- Vault-to-MCP credential matching is normalized (scheme and host lowercased,
default ports and trailing slashes stripped), not byte-exact.
- Multiagent depth greater than 1 is a validation error, not silently ignored.
- Outcome `interrupted` fires even when evaluation never started, and then
carries an empty-string `outcome_evaluation_start_id`.
- Deployment jitter is 15% of the run interval, floor 5s, cap 9 minutes.
- Webhooks retry three times with jittered 5-120s backoff, then drop silently.
Auto-disable is duration-based with three named triggers.
- `session.status_terminated` means completion or error.
- `agent.thinking` is a progress signal and carries no thinking content.
- `processed_at` is already populated on first sighting for
`user.define_outcome`, `user.custom_tool_result`, and `user.tool_result`.
- Session creation does not provision the sandbox.
- Skill `version` applies to Anthropic-authored skills too.
- Console-created vault credentials are header-injection only, and vault
environment-variable substitution skips secrets in URL paths.
- Console trace URLs need the real workspace ID when the API key is not in the
Default workspace.
## Elsewhere in the skill
- Note partner pricing under the first-party price table: Microsoft Foundry
bills at standard API rates, while Amazon Bedrock and Vertex AI are
partner-operated with separate pricing.
- Correct the tool-runner human-in-the-loop guidance, which previously pointed
readers at the manual loop for approval gates the runner's per-turn hooks
already cover.
- Repoint links away from the retired documentation hosts.
- Dedupe eagerly loaded SKILL.md content that the per-section files already
cover.
341 lines
7.5 KiB
Markdown
341 lines
7.5 KiB
Markdown
# Managed Agents — cURL / Raw HTTP
|
|
|
|
Use these examples when the user needs raw HTTP requests or is working without an SDK.
|
|
|
|
## Setup
|
|
|
|
```bash
|
|
export ANTHROPIC_API_KEY="your-api-key"
|
|
|
|
# Common headers
|
|
HEADERS=(
|
|
-H "Content-Type: application/json"
|
|
-H "x-api-key: $ANTHROPIC_API_KEY"
|
|
-H "anthropic-version: 2023-06-01"
|
|
-H "anthropic-beta: managed-agents-2026-04-01"
|
|
)
|
|
```
|
|
|
|
---
|
|
|
|
## Create an Environment
|
|
|
|
```bash
|
|
curl -X POST https://api.anthropic.com/v1/environments \
|
|
"${HEADERS[@]}" \
|
|
-d '{
|
|
"name": "my-dev-env",
|
|
"config": {
|
|
"type": "cloud",
|
|
"networking": { "type": "unrestricted" }
|
|
}
|
|
}'
|
|
```
|
|
|
|
### With restricted networking
|
|
|
|
```bash
|
|
curl -X POST https://api.anthropic.com/v1/environments \
|
|
"${HEADERS[@]}" \
|
|
-d '{
|
|
"name": "restricted-env",
|
|
"config": {
|
|
"type": "cloud",
|
|
"networking": {
|
|
"type": "limited",
|
|
"allow_package_managers": true,
|
|
"allow_mcp_servers": true,
|
|
"allowed_hosts": ["api.example.com"]
|
|
}
|
|
}
|
|
}'
|
|
```
|
|
|
|
---
|
|
|
|
## Create an Agent (required first step)
|
|
|
|
> ⚠️ **There is no inline agent config.** Under `managed-agents-2026-04-01`, `model`/`system`/`tools` are top-level fields on `POST /v1/agents`, not on the session. Always create the agent first — the session only takes `"agent": {"type": "agent", "id": "..."}`.
|
|
|
|
### Minimal
|
|
|
|
```bash
|
|
# 1. Create the agent
|
|
curl -X POST https://api.anthropic.com/v1/agents \
|
|
"${HEADERS[@]}" \
|
|
-d '{
|
|
"name": "Coding Assistant",
|
|
"model": "claude-opus-4-8",
|
|
"tools": [{ "type": "agent_toolset_20260401" }]
|
|
}'
|
|
# → { "id": "agent_abc123", ... }
|
|
|
|
# 2. Start a session
|
|
curl -X POST https://api.anthropic.com/v1/sessions \
|
|
"${HEADERS[@]}" \
|
|
-d '{
|
|
"agent": { "type": "agent", "id": "agent_abc123", "version": "1772585501101368014" },
|
|
"environment_id": "env_abc123"
|
|
}'
|
|
# → { "id": "sesn_abc123", ... }
|
|
# Trace: https://platform.claude.com/workspaces/default/sessions/sesn_abc123 (swap 'default' for your workspace ID if the API key is not in the Default workspace)
|
|
```
|
|
|
|
### With system prompt, custom tools, and GitHub repo
|
|
|
|
```bash
|
|
# 1. Create the agent
|
|
curl -X POST https://api.anthropic.com/v1/agents \
|
|
"${HEADERS[@]}" \
|
|
-d '{
|
|
"name": "Code Reviewer",
|
|
"model": "claude-opus-4-8",
|
|
"system": "You are a senior code reviewer. Be thorough and constructive.",
|
|
"tools": [
|
|
{ "type": "agent_toolset_20260401" },
|
|
{
|
|
"type": "custom",
|
|
"name": "run_linter",
|
|
"description": "Run the project linter on a file",
|
|
"input_schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"file_path": { "type": "string", "description": "Path to lint" }
|
|
},
|
|
"required": ["file_path"]
|
|
}
|
|
}
|
|
]
|
|
}'
|
|
|
|
# 2. Start a session with the repo mounted
|
|
curl -X POST https://api.anthropic.com/v1/sessions \
|
|
"${HEADERS[@]}" \
|
|
-d '{
|
|
"agent": { "type": "agent", "id": "agent_abc123", "version": "1772585501101368014" },
|
|
"environment_id": "env_abc123",
|
|
"title": "Code review session",
|
|
"resources": [
|
|
{
|
|
"type": "github_repository",
|
|
"url": "https://github.com/owner/repo",
|
|
"mount_path": "/workspace/repo",
|
|
"authorization_token": "ghp_...",
|
|
"branch": "feature-branch"
|
|
}
|
|
]
|
|
}'
|
|
```
|
|
|
|
---
|
|
|
|
## Send a User Message
|
|
|
|
```bash
|
|
curl -X POST https://api.anthropic.com/v1/sessions/$SESSION_ID/events \
|
|
"${HEADERS[@]}" \
|
|
-d '{
|
|
"events": [
|
|
{
|
|
"type": "user.message",
|
|
"content": [{ "type": "text", "text": "Review the auth module for security issues" }]
|
|
}
|
|
]
|
|
}'
|
|
```
|
|
|
|
---
|
|
|
|
## Stream Events (SSE)
|
|
|
|
```bash
|
|
curl -N https://api.anthropic.com/v1/sessions/$SESSION_ID/events/stream \
|
|
"${HEADERS[@]}"
|
|
```
|
|
|
|
Response format:
|
|
|
|
```
|
|
event: session.status_running
|
|
data: {"type":"session.status_running","id":"sevt_...","processed_at":"..."}
|
|
|
|
event: agent.message
|
|
data: {"type":"agent.message","id":"sevt_...","content":[{"type":"text","text":"I'll review..."}],"processed_at":"..."}
|
|
|
|
event: session.status_idle
|
|
data: {"type":"session.status_idle","id":"sevt_...","processed_at":"..."}
|
|
```
|
|
|
|
---
|
|
|
|
## Poll Events
|
|
|
|
```bash
|
|
# Get all events
|
|
curl https://api.anthropic.com/v1/sessions/$SESSION_ID/events \
|
|
"${HEADERS[@]}"
|
|
|
|
# Paginated — get next page of events
|
|
curl "https://api.anthropic.com/v1/sessions/$SESSION_ID/events?page=page_abc123" \
|
|
"${HEADERS[@]}"
|
|
```
|
|
|
|
---
|
|
|
|
## Provide Custom Tool Result
|
|
|
|
When the agent calls a custom tool, send the result back:
|
|
|
|
```bash
|
|
curl -X POST https://api.anthropic.com/v1/sessions/$SESSION_ID/events \
|
|
"${HEADERS[@]}" \
|
|
-d '{
|
|
"events": [
|
|
{
|
|
"type": "user.custom_tool_result",
|
|
"custom_tool_use_id": "sevt_abc123",
|
|
"content": [{ "type": "text", "text": "No linting errors found." }]
|
|
}
|
|
]
|
|
}'
|
|
```
|
|
|
|
---
|
|
|
|
## Interrupt a Running Session
|
|
|
|
```bash
|
|
curl -X POST https://api.anthropic.com/v1/sessions/$SESSION_ID/events \
|
|
"${HEADERS[@]}" \
|
|
-d '{
|
|
"events": [
|
|
{
|
|
"type": "user.interrupt"
|
|
}
|
|
]
|
|
}'
|
|
```
|
|
|
|
---
|
|
|
|
## Get Session Details
|
|
|
|
```bash
|
|
curl https://api.anthropic.com/v1/sessions/$SESSION_ID \
|
|
"${HEADERS[@]}"
|
|
```
|
|
|
|
---
|
|
|
|
## List Sessions
|
|
|
|
```bash
|
|
curl https://api.anthropic.com/v1/sessions \
|
|
"${HEADERS[@]}"
|
|
```
|
|
|
|
---
|
|
|
|
## Delete a Session
|
|
|
|
```bash
|
|
curl -X DELETE https://api.anthropic.com/v1/sessions/$SESSION_ID \
|
|
"${HEADERS[@]}"
|
|
```
|
|
|
|
---
|
|
|
|
## Upload a File
|
|
|
|
```bash
|
|
curl -X POST https://api.anthropic.com/v1/files \
|
|
-H "x-api-key: $ANTHROPIC_API_KEY" \
|
|
-H "anthropic-version: 2023-06-01" \
|
|
-H "anthropic-beta: files-api-2025-04-14" \
|
|
-F "file=@path/to/file.txt"
|
|
```
|
|
|
|
---
|
|
|
|
## List and Download Session Files
|
|
|
|
List files the agent wrote to `/mnt/session/outputs/` during a session, then download them.
|
|
|
|
```bash
|
|
# List files associated with a session
|
|
curl "https://api.anthropic.com/v1/files?scope_id=$SESSION_ID" \
|
|
-H "x-api-key: $ANTHROPIC_API_KEY" \
|
|
-H "anthropic-version: 2023-06-01" \
|
|
-H "anthropic-beta: files-api-2025-04-14,managed-agents-2026-04-01"
|
|
|
|
# Download a specific file
|
|
curl "https://api.anthropic.com/v1/files/$FILE_ID/content" \
|
|
-H "x-api-key: $ANTHROPIC_API_KEY" \
|
|
-H "anthropic-version: 2023-06-01" \
|
|
-H "anthropic-beta: files-api-2025-04-14,managed-agents-2026-04-01" \
|
|
-o downloaded_file.txt
|
|
```
|
|
|
|
---
|
|
|
|
## List Agents
|
|
|
|
```bash
|
|
curl https://api.anthropic.com/v1/agents \
|
|
"${HEADERS[@]}"
|
|
```
|
|
|
|
---
|
|
|
|
## MCP Server Integration
|
|
|
|
```bash
|
|
# 1. Agent declares MCP server (no auth here — auth goes in a vault)
|
|
curl -X POST https://api.anthropic.com/v1/agents \
|
|
"${HEADERS[@]}" \
|
|
-d '{
|
|
"name": "MCP Agent",
|
|
"model": "claude-opus-4-8",
|
|
"mcp_servers": [
|
|
{ "type": "url", "name": "my-tools", "url": "https://my-mcp-server.example.com/sse" }
|
|
],
|
|
"tools": [
|
|
{ "type": "agent_toolset_20260401" },
|
|
{ "type": "mcp_toolset", "mcp_server_name": "my-tools" }
|
|
]
|
|
}'
|
|
|
|
# 2. Session attaches vault containing credentials for that MCP server URL
|
|
curl -X POST https://api.anthropic.com/v1/sessions \
|
|
"${HEADERS[@]}" \
|
|
-d '{
|
|
"agent": "agent_abc123",
|
|
"environment_id": "env_abc123",
|
|
"vault_ids": ["vlt_abc123"]
|
|
}'
|
|
```
|
|
|
|
See `shared/managed-agents-tools.md` §Vaults for creating vaults and adding credentials.
|
|
|
|
---
|
|
|
|
## Tool Configuration
|
|
|
|
```bash
|
|
curl -X POST https://api.anthropic.com/v1/agents \
|
|
"${HEADERS[@]}" \
|
|
-d '{
|
|
"name": "Restricted Agent",
|
|
"model": "claude-opus-4-8",
|
|
"tools": [
|
|
{
|
|
"type": "agent_toolset_20260401",
|
|
"default_config": { "enabled": true },
|
|
"configs": [
|
|
{ "name": "bash", "enabled": false }
|
|
]
|
|
}
|
|
]
|
|
}'
|
|
```
|