Claude Platform Docs
Managed AgentsGérer le contexte de l'agent

Accéder à GitHub

Connectez votre agent à des dépôts GitHub pour cloner, lire et créer des pull requests.

Vous pouvez monter un dépôt GitHub dans le sandbox 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 futures sessions utilisant le même dépôt démarrent plus rapidement.

MCP GitHub et ressources de session

Tout d'abord, créez 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 --transform id --raw-output < code-reviewer.agent.yaml)
code-reviewer.agent.yaml
name: Code Reviewer
model:
  id: claude-opus-5
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

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",
        },
    ],
)

Une ressource github_repository accepte les champs suivants :

ChampDescription
typeRequis. Doit être "github_repository".
urlRequis. L'URL HTTPS du dépôt sous la forme https://github.com/<owner>/<repo>, sans suffixe .git. Les autres formes, y compris les URL SSH, sont rejetées avec une invalid_request_error.
authorization_tokenRequis. Le jeton GitHub utilisé pour cloner le dépôt. Il n'est pas renvoyé dans les réponses de l'API. Consultez Autorisations des jetons.
mount_pathOptionnel. Le répertoire sous /workspace dans lequel cloner le dépôt. Par défaut /workspace/<repo-name>.
checkoutOptionnel. Une branche ({"type": "branch", "name": "main"}) ou un commit ({"type": "commit", "sha": "..."}) à extraire. Par défaut, la branche par défaut du dépôt.

Le montage d'un dépôt charge également toutes les compétences stockées dans son répertoire racine .claude/skills. Les compétences sont découvertes une fois par session, à partir de l'état du dépôt extrait au démarrage de la session. Consultez Charger des compétences depuis un dépôt GitHub.

Autorisations des jetons

Lorsque vous fournissez un jeton GitHub, utilisez les autorisations minimales requises :

ActionPortées requises
Cloner des dépôts privésrepo
Créer des PRrepo
Lire des issuesrepo (privé) ou public_repo
Créer des issuesrepo (privé) ou public_repo

Plusieurs dépôts

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",
    },
]

Gérer les dépôts sur une session en cours d'exécution

Après la création d'une session, vous pouvez lister ses ressources de dépôt et faire tourner 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",
)

Créer des pull requests

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.",
                },
            ],
        },
    ],
)

Prochaines étapes

Diffusez les événements en streaming et pilotez l'agent pendant qu'il ouvre la pull request

Connectez davantage de serveurs MCP pour donner à l'agent des outils supplémentaires

Montez des fichiers dans le sandbox aux côtés de vos dépôts

Was this page helpful?