Claude Platform Docs
Managed AgentsУправление контекстом агента

Доступ к GitHub

Подключите вашего агента к репозиториям GitHub для клонирования, чтения и создания pull request'ов.

Вы можете смонтировать репозиторий GitHub в песочницу вашей сессии и подключиться к GitHub MCP для создания pull request'ов.

Репозитории GitHub кэшируются, поэтому будущие сессии, использующие тот же репозиторий, запускаются быстрее.

GitHub MCP и ресурсы сессии

Сначала создайте агента, который объявляет сервер GitHub MCP. Определение агента содержит URL сервера, но не токен аутентификации:

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

Затем создайте сессию, которая монтирует репозиторий 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",
        },
    ],
)

Ресурс github_repository принимает следующие поля:

ПолеОписание
typeОбязательное. Должно быть "github_repository".
urlОбязательное. HTTPS URL репозитория в форме https://github.com/<owner>/<repo>, без суффикса .git. Другие формы, включая SSH URL, отклоняются с ошибкой invalid_request_error.
authorization_tokenОбязательное. Токен GitHub, используемый для клонирования репозитория. Он не возвращается в ответах API. См. Разрешения токена.
mount_pathНеобязательное. Каталог внутри /workspace, в который клонируется репозиторий. По умолчанию /workspace/<repo-name>.
checkoutНеобязательное. Ветка ({"type": "branch", "name": "main"}) или коммит ({"type": "commit", "sha": "..."}) для извлечения. По умолчанию используется ветка репозитория по умолчанию.

Монтирование репозитория также загружает все навыки (skills), хранящиеся в его корневом каталоге .claude/skills. Навыки обнаруживаются один раз за сессию, из состояния репозитория, извлечённого при запуске сессии. См. Загрузка навыков из репозитория GitHub.

Разрешения токена

При предоставлении токена GitHub используйте минимально необходимые разрешения:

ДействиеТребуемые области доступа
Клонирование приватных репозиториевrepo
Создание PRrepo
Чтение issuesrepo (приватные) или public_repo
Создание issuesrepo (приватные) или public_repo

Несколько репозиториев

Смонтируйте несколько репозиториев, добавив записи в массив 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",
    },
]

Управление репозиториями в работающей сессии

После создания сессии вы можете получить список её ресурсов-репозиториев и выполнить ротацию их токенов авторизации. Каждый ресурс имеет id, возвращаемый при создании сессии (или через resources.list), который вы используете для обновлений. Репозитории подключены на всё время жизни сессии; чтобы изменить набор смонтированных репозиториев, создайте новую сессию.

# Вывести список ресурсов сессии
listed = client.beta.sessions.resources.list(session.id)
repo_resource_id = listed.data[0].id
print(repo_resource_id)  # "sesrsc_01ABC..."

# Сменить токен авторизации
client.beta.sessions.resources.update(
    repo_resource_id,
    session_id=session.id,
    authorization_token="ghp_your_new_github_token",
)

Создание pull request'ов

С помощью сервера GitHub MCP агент может создавать ветки, фиксировать изменения и отправлять их:

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

Следующие шаги

Получайте события в режиме потоковой передачи и направляйте агента, пока он открывает pull request

Подключите больше серверов MCP, чтобы предоставить агенту дополнительные инструменты

Монтируйте файлы в песочнице вместе с вашими репозиториями

Was this page helpful?