Claude Platform Docs
Managed AgentsGerenciar contexto do agente

Acessando o GitHub

Conecte seu agente a repositórios do GitHub para clonar, ler e criar pull requests.

Você pode montar um repositório do GitHub no sandbox da sua sessão e conectar-se ao MCP do GitHub para criar pull requests.

Os repositórios do GitHub são armazenados em cache, então sessões futuras que usam o mesmo repositório iniciam mais rápido.

MCP do GitHub e recursos de sessão

Primeiro, crie um agente que declara o servidor MCP do GitHub. A definição do agente contém a URL do servidor, mas nenhum token de autenticação:

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

Em seguida, crie uma sessão que monta o repositório do 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",
        },
    ],
)

Um recurso github_repository aceita os seguintes campos:

CampoDescrição
typeObrigatório. Deve ser "github_repository".
urlObrigatório. A URL HTTPS do repositório no formato https://github.com/<owner>/<repo>, sem o sufixo .git. Outros formatos, incluindo URLs SSH, são rejeitados com um invalid_request_error.
authorization_tokenObrigatório. O token do GitHub usado para clonar o repositório. Ele não é retornado nas respostas da API. Consulte Permissões de token.
mount_pathOpcional. O diretório sob /workspace no qual clonar o repositório. O padrão é /workspace/<repo-name>.
checkoutOpcional. Um branch ({"type": "branch", "name": "main"}) ou commit ({"type": "commit", "sha": "..."}) para fazer checkout. O padrão é o branch padrão do repositório.

Montar um repositório também carrega quaisquer skills armazenadas em seu diretório raiz .claude/skills. As skills são descobertas uma vez por sessão, a partir do estado do repositório que foi feito checkout no início da sessão. Consulte Carregar skills de um repositório do GitHub.

Permissões de token

Ao fornecer um token do GitHub, use as permissões mínimas necessárias:

AçãoEscopos necessários
Clonar repositórios privadosrepo
Criar PRsrepo
Ler issuesrepo (privado) ou public_repo
Criar issuesrepo (privado) ou public_repo

Múltiplos repositórios

Monte múltiplos repositórios adicionando entradas ao array 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",
    },
]

Gerenciando repositórios em uma sessão em execução

Depois que uma sessão é criada, você pode listar seus recursos de repositório e rotacionar seus tokens de autorização. Cada recurso tem um id retornado no momento da criação da sessão (ou através de resources.list) que você usa para atualizações. Os repositórios são anexados durante todo o tempo de vida da sessão; para alterar quais repositórios estão montados, crie uma nova sessão.

# Listar recursos na sessão
listed = client.beta.sessions.resources.list(session.id)
repo_resource_id = listed.data[0].id
print(repo_resource_id)  # "sesrsc_01ABC..."

# Rotacionar o token de autorização
client.beta.sessions.resources.update(
    repo_resource_id,
    session_id=session.id,
    authorization_token="ghp_your_new_github_token",
)

Criando pull requests

Com o servidor MCP do GitHub, o agente pode criar branches, fazer commit de alterações e enviá-las:

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

Próximos passos

Faça streaming de eventos e direcione o agente enquanto ele abre o pull request

Conecte mais servidores MCP para dar ao agente ferramentas adicionais

Monte arquivos no sandbox junto com seus repositórios

Was this page helpful?