Was this page helpful?
Sie können ein GitHub-Repository in Ihren Session-Container einbinden und eine Verbindung zum GitHub MCP herstellen, um Pull Requests zu erstellen.
GitHub-Repositories werden zwischengespeichert, sodass zukünftige Sessions, die dasselbe Repository verwenden, schneller starten.
Alle Managed Agents API-Anfragen erfordern den managed-agents-2026-04-01 Beta-Header. Das SDK setzt den Beta-Header automatisch.
Erstellen Sie zunächst einen Agenten, der den GitHub MCP-Server deklariert. Die Agentendefinition enthält die Server-URL, aber kein Auth-Token:
agent_id=$(curl -fsS https://api.anthropic.com/v1/agents \
-H "x-api-key: $ANTHROPIC_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-H "anthropic-beta: managed-agents-2026-04-01" \
-H "content-type: application/json" \
--data @- <<JSON | jq -r '.id'
{
"name": "Code Reviewer",
"model": "claude-sonnet-4-6",
"system": "You are a code review assistant with access to GitHub.",
"mcp_servers": [
{
"type": "url",
"name": "github",
"url": "https://api.githubcopilot.com/mcp/"
}
],
"tools": [
{"type": "agent_toolset_20260401"},
{
"type": "mcp_toolset",
"mcp_server_name": "github"
}
]
}
JSON
)Erstellen Sie dann eine Session, die das GitHub-Repository einbindet:
Das resources[].authorization_token authentifiziert den Repository-Klonvorgang und wird in API-Antworten nicht zurückgegeben.
Verwenden Sie beim Bereitstellen eines GitHub-Tokens die minimal erforderlichen Berechtigungen:
| Aktion | Erforderliche Scopes |
|---|---|
| Private Repos klonen | repo |
| PRs erstellen | repo |
| Issues lesen | repo (privat) oder public_repo |
| Issues erstellen | repo (privat) oder public_repo |
Verwenden Sie fein abgestufte persönliche Zugriffstoken mit minimal erforderlichen Berechtigungen. Vermeiden Sie die Verwendung von Token mit umfassendem Zugriff auf Ihr GitHub-Konto.
Binden Sie mehrere Repositories ein, indem Sie Einträge zum resources-Array hinzufügen:
Nachdem eine Session erstellt wurde, können Sie ihre Repository-Ressourcen auflisten und deren Autorisierungstoken rotieren. Jede Ressource hat eine id, die zum Zeitpunkt der Session-Erstellung zurückgegeben wird (oder über resources.list), die Sie für Aktualisierungen verwenden. Repositories sind für die Lebensdauer der Session eingebunden; um zu ändern, welche Repositories eingebunden sind, erstellen Sie eine neue Session.
Mit dem GitHub MCP-Server kann der Agent Branches erstellen, Änderungen committen und diese pushen:
session_id=$(curl -fsS https://api.anthropic.com/v1/sessions \
-H "x-api-key: $ANTHROPIC_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-H "anthropic-beta: managed-agents-2026-04-01" \
-H "content-type: application/json" \
--data @- <<JSON | jq -r '.id'
{
"agent": "$agent_id",
"environment_id": "$environment_id",
"resources": [
{
"type": "github_repository",
"url": "https://github.com/org/repo",
"mount_path": "/workspace/repo",
"authorization_token": "ghp_your_github_token"
}
]
}
JSON
)resources='[
{
"type": "github_repository",
"url": "https://github.com/org/frontend",
"mount_path": "/workspace/frontend",
"authorization_token": "ghp_your_github_token"
},
{
"type": "github_repository",
"url": "https://github.com/org/backend",
"mount_path": "/workspace/backend",
"authorization_token": "ghp_your_github_token"
}
]'# List resources on the session
repo_resource_id=$(curl -fsS "https://api.anthropic.com/v1/sessions/$session_id/resources" \
-H "x-api-key: $ANTHROPIC_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-H "anthropic-beta: managed-agents-2026-04-01" \
-H "content-type: application/json" | jq -r '.data[0].id')
echo "$repo_resource_id" # "sesrsc_01ABC..."
# Rotate the authorization token
curl -fsS "https://api.anthropic.com/v1/sessions/$session_id/resources/$repo_resource_id" \
-o /dev/null \
--data @- <<JSON
{
"authorization_token": "ghp_your_new_github_token"
}
JSONcurl -fsS "https://api.anthropic.com/v1/sessions/$session_id/events" \
-H "x-api-key: $ANTHROPIC_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-H "anthropic-beta: managed-agents-2026-04-01" \
-H "content-type: application/json" \
-o /dev/null \
--data @- <<JSON
{
"events": [
{
"type": "user.message",
"content": [
{
"type": "text",
"text": "Fix the type error in src/utils.ts, commit it to a new branch, and push it."
}
]
}
]
}
JSON