Vous pouvez monter un dépôt GitHub dans le bac à sable de votre session et vous connecter au MCP GitHub pour créer des pull requests.
Les dépôts GitHub sont mis en cache, de sorte que les sessions futures utilisant le même dépôt démarrent plus rapidement.
Toutes les requêtes à l'API Managed Agents nécessitent l'en-tête bêta managed-agents-2026-04-01. Le SDK définit automatiquement l'en-tête bêta.
Commencez par créer un agent qui déclare le serveur MCP GitHub. La définition de l'agent contient l'URL du serveur, mais aucun jeton d'authentification :
AGENT_ID=$(ant beta:agents create \
--name "Code Reviewer" \
--model '{id: claude-opus-4-8}' \
--system "You are a code review assistant with access to GitHub." \
--mcp-server '{type: url, name: github, url: https://api.githubcopilot.com/mcp/}' \
--tool '{type: agent_toolset_20260401}' \
--tool '{type: mcp_toolset, mcp_server_name: github}' \
--transform id --raw-output)Créez ensuite une session qui monte le dépôt GitHub :
session = client.beta.sessions.create(
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",
},
],
)Le champ resources[].authorization_token authentifie l'opération de clonage du dépôt et n'est pas renvoyé dans les réponses de l'API.
Lorsque vous fournissez un jeton GitHub, utilisez les permissions minimales requises :
| Action | Portées requises |
|---|---|
| Cloner des dépôts privés | repo |
| Créer des PR | repo |
| Lire des issues | repo (privé) ou public_repo |
| Créer des issues | repo (privé) ou public_repo |
Utilisez des « fine-grained personal access tokens » (jetons d'accès personnels à granularité fine) avec les permissions minimales requises. Évitez d'utiliser des jetons disposant d'un accès étendu à votre compte GitHub.
Montez plusieurs dépôts en ajoutant des entrées au tableau resources :
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",
},
]Une fois la session créée, vous pouvez lister ses ressources de dépôt et renouveler leurs jetons d'autorisation. Chaque ressource possède un id renvoyé au moment de la création de la session (ou via resources.list) que vous utilisez pour les mises à jour. Les dépôts sont attachés pour toute la durée de vie de la session ; pour modifier les dépôts montés, créez une nouvelle session.
# Lister les ressources de la session
listed = client.beta.sessions.resources.list(session.id)
repo_resource_id = listed.data[0].id
print(repo_resource_id) # "sesrsc_01ABC..."
# Effectuer la rotation du jeton d'autorisation
client.beta.sessions.resources.update(
repo_resource_id,
session_id=session.id,
authorization_token="ghp_your_new_github_token",
)Avec le serveur MCP GitHub, l'agent peut créer des branches, valider des modifications et les pousser :
client.beta.sessions.events.send(
session.id,
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.",
},
],
},
],
)Diffusez les événements en streaming et guidez l'agent pendant qu'il ouvre la pull request
Connectez davantage de serveurs MCP pour fournir des outils supplémentaires à l'agent
Montez des fichiers dans le bac à sable aux côtés de vos dépôts
Was this page helpful?