Подтверждения

Как подтверждать запросы разрешений Claude Code (и Codex) с телефона

Чаще всего агент перестаёт продвигаться из-за запроса разрешения, которого никто не увидел. Ответить на него из кармана можно тремя способами: собственные push-уведомления Claude Code, самодельный хук с ntfy или приложение с входящими. Вот как каждый работает с Claude Code, что меняется для Codex и других агентов и чем вы платите за каждый в плане безопасности.

Как подтверждать запросы разрешений Claude Code (и Codex) с телефона

Короткий ответ

С тарифом Pro, Max, Team или Enterprise запустите Remote Control и включите в /config Push when actions required. Тогда приложение Claude будет присылать уведомления, а отвечать на запрос вы будете в приложении. Бесплатная альтернатива, которую можно разместить у себя, — хуки с открытым кодом вроде claude-remote-approver: они отправляют каждый PermissionRequest в ntfy с кнопками Approve/Deny. У Codex есть такой же хук PermissionRequest. Приложения вроде Maude показывают запросы от нескольких агентов в одних входящих, а в push-уведомлениях есть «Разрешить/Отклонить».

Когда Claude Code хочет выполнить команду или изменить файл, которые вы заранее не одобрили, он останавливается и спрашивает. Если вы у терминала, это секундное дело. Если нет, сессия ждёт — и это может обернуться часом ожидания одного нажатия клавиши. Любая схема удалённых подтверждений доставляет запрос на телефон, а ваш ответ — обратно агенту. Различаются они тем, как перехватывается запрос, куда он идёт и кто может на него ответить.

Как работают удалённые подтверждения

Механизмов два, и каждый инструмент использует один из них.

  • Собственный удалённый протокол агента. Remote Control в Claude Code пересылает настоящий диалог разрешения в приложение Claude. Remote Control в Antigravity и app-server в Codex работают так же. Посередине никто ничего не решает: вы отвечаете на собственный запрос агента.
  • Хуки. Claude Code в определённые моменты запускает настроенную вами программу. Хук PermissionRequest срабатывает, когда вот-вот появится диалог разрешения, и может ответить за вас, выведя решение вроде {"behavior": "allow"} или "deny". Хук PreToolUse срабатывает перед каждым вызовом инструмента и может вернуть allow, deny, ask или defer. Хук, который отправляет пуш и ждёт вашего касания, — так устроен любой самодельный инструмент подтверждений с телефона. Подробности — в справочнике по хукам.

Нативные пуши в Claude Code

Собственный путь Anthropic идёт через Remote Control:

  1. Запустите сессию командой claude remote-control (серверный режим) или claude --remote-control либо введите /remote-control в запущенной сессии.
  2. Войдите в приложение Claude на телефоне с тем же аккаунтом и разрешите уведомления.
  3. В терминале выполните /config и включите Push when actions required — это покрывает запросы разрешений и вопросы. Push when Claude decides покрывает проактивные обновления вроде «тесты завершены».

Документация упоминает несколько вещей, с которыми вы столкнётесь:

  • Тарифы и вход. Remote Control доступен в Pro, Max, Team и Enterprise, ключи API не поддерживаются. В Team и Enterprise его должен включить Owner.
  • У запросов нет тайм-аута. Запросы разрешений и вопросы остаются открытыми, пока вы не ответите.
  • Пуши приостанавливаются, пока вы у терминала. Claude Code не присылает пуши, пока вы печатаете в подключённом терминале или он в фокусе. CLAUDE_CLIENT_PRESENCE_FILE расширяет это на всё время, пока вы за машиной.
  • Процесс должен оставаться живым. Процесс claude должен продолжать работать, так что на сервере запускайте его внутри tmux.
  • Некоторые режимы из приложения недоступны. Согласно мобильной документации, из приложения нельзя выбрать Bypass permissions, а для сессии Remote Control — и Auto.

Если у вас тариф Claude и вы пользуетесь только Claude Code, начните с этого. Это бесплатно в рамках вашего тарифа и поддерживается Anthropic.

Своими силами: хуки с ntfy

ntfy — push-сервис с открытым кодом. Вы публикуете сообщение в топик обычным HTTP-запросом, и приложение ntfy на телефоне его показывает. Несколько проектов с открытым кодом сочетают его с хуком PermissionRequest. Хук отправляет ожидающий вызов инструмента в ваш топик с кнопками действий, ждёт вашего касания во втором топике и возвращает решение в Claude Code. Отдадим должное авторам:

ПроектХукЕсли не ответитьПримечания
claude-remote-approver (yuuichieguchi)PermissionRequestЧерез 120 с возвращается к запросу в терминале (300 с для проверки планов)npm install -g claude-remote-approver; генерирует случайный 128-битный топик; Approve / Always Approve / Deny
claude-push (coa00)PermissionRequestЧерез 90 с возвращается к терминалу (настраивается)Скрипт установки для оболочки; Allow / Deny
claude-code-phone-notifications (ssarnecki)PermissionRequest, PreToolUse, StopЖдёт около 9 минут, затем возвращается к терминалуЖдёт 30 с перед пушем на случай, если вы за столом; также присылает запросы AskUserQuestion (без кнопок)
hookline (tsyche)PreToolUse для Claude; PermissionRequest для CodexПо умолчанию 15 минут, с более длинным окном для поздних ответовПоддерживает также Codex, Grok и OpenCode; работает с собственным ntfy с учётными данными

Все четыре распространяются по лицензии MIT. Тайм-ауты — их документированные значения по умолчанию. Если вам нужно просто оповещение, без удалённого ответа, хватит хука Notification в Claude Code. Матчер permission_prompt срабатывает, когда появляется диалог:

{
  "hooks": {
    "Notification": [
      {
        "matcher": "permission_prompt",
        "hooks": [
          { "type": "command",
            "command": "curl -s -d 'Claude Code is waiting for approval' https://ntfy.sh/your-long-random-topic" }
        ]
      }
    ]
  }
}

Поместите это в ~/.claude/settings.json на машине, где работает Claude Code. Чтобы ответить, вам всё равно придётся добраться до терминала. Проекты выше добавляют путь для ответа.

Входящие в Maude

Maude использует первый подход. Её демон на вашем сервере общается с каждым агентом по его собственному протоколу, поэтому запрос разрешения приходит в приложение как настоящий запрос, а не как догадка хука. Запросы из всех сессий на всех серверах попадают в одни входящие рядом с ошибками и готовой работой. Ответить можно прямо там или из push-уведомления, в котором есть «Разрешить» и «Отклонить». Запрос ждёт вашего ответа; сессия не продолжает работу без вас по тайм-ауту. Это работает для Claude Code, Codex, OpenCode и Grok Build. Исключение — Antigravity: headless-agy не может остановиться перед запуском инструмента, поэтому Maude показывает отклонённое действие постфактум и повторяет его, если вы разрешите. Maude — платное приложение, и каждому агенту нужен свой аккаунт. Это не единственное приложение с входящими и пушами: они есть, например, у Happier.

Codex и другие агенты

  • У Codex тоже есть хуки, включённые по умолчанию. Хук PermissionRequest может ответить "behavior": "allow" или "deny", а PreToolUse может запретить. Они живут в ~/.codex/hooks.json или в [hooks] в config.toml. Именно их hookline использует для Codex. Старая настройка Codex notify запускает программу, когда ход завершён. По сообщениям в сторонних разборах, для запросов на подтверждение она не срабатывает, так что для подтверждений используйте хуки. Об официальном пути Codex через приложение на телефоне и его ограничениях на Linux — в статье Codex CLI на VPS.
  • Antigravity отвечает на запросы из панели Remote Control, когда вы запускаете его интерактивно или как демон. Headless-agy отклоняет, а не спрашивает. Смотрите Antigravity CLI на сервере.
  • OpenCode и Grok Build покрываются плагином и хуками hookline или мультиагентными приложениями.

Безопасность удалённых подтверждений

Подтверждение с телефона надёжно настолько, насколько надёжно самое слабое звено между запросом и вашим касанием.

  • На ntfy.sh топик — это пароль. В документации ntfy так прямо и сказано: без регистрации любой, кто знает имя топика, может его читать и публиковать в него. На публичном сервере угаданный топик означает, что кто-то другой сможет одобрять команды вашего агента. Используйте длинный случайный топик или разверните ntfy у себя с аутентификацией.
  • Читайте команду, а не заголовок. Пуш на экране блокировки показывает краткое содержание. rm -rf внутри длинной строки Bash легко пропустить на 6-дюймовом экране. Используйте «разрешать всегда» для инструментов только для чтения, а не для Bash(*).
  • Знайте свой запасной вариант. Самодельные хуки выше по тайм-ауту возвращаются к запросу в терминале, так что неотвеченный запрос блокирует работу, а не одобряется автоматически. Пишете свой хук — следуйте тому же правилу. Документация Claude Code предупреждает, что хук PreToolUse, у которого истёк тайм-аут, не блокирует вызов инструмента — тот идёт дальше по обычной схеме разрешений, так что не рассчитывайте на зависший хук как на барьер.
  • Закройте канал. Трафик подтверждений раскрывает, чем занят ваш агент. Remote Control от Anthropic идёт через серверы Anthropic, а ретранслятор Maude видит только трафик со сквозным шифрованием. С хуком вы сами выбираете, куда он идёт. Настройка Anthropic Require trusted devices ограничивает, какие устройства могут пользоваться Remote Control.
  • Подтверждения — страховочная сетка, а не песочница. Запуск агента от пользователя без root на машине, которую можно пересобрать, важнее любого интерфейса подтверждений. Смотрите статью о безопасном запуске агентов с полными правами.

Отвечайте из Maude

Если ваши агенты работают на сервере и вам нужно одно место, чтобы отвечать им всем, попробуйте Maude с Claude Code или Codex. Добавьте сервер из приложения, войдите со своим тарифом, и запросы разрешений будут приходить push-уведомлениями с кнопками «Разрешить» и «Отклонить». Входящие собирают всё, что ждёт вашего решения.

Часто задаваемые вопросы

Умеет ли Claude Code присылать push-уведомления?
Да, через Remote Control. Подключите сессию к приложению Claude, а затем включите Push when actions required (и при желании Push when Claude decides) в /config. Нужен тариф Pro, Max, Team или Enterprise; вход с ключом API не поддерживается.
Можно ли разрешить или запретить прямо с экрана блокировки?
С хуками на базе ntfy — да: они добавляют к уведомлению кнопки Approve/Deny. Документация Anthropic описывает пуши для запросов разрешений, но не кнопки ответа в самом уведомлении, так что рассчитывайте отвечать в приложении Claude. В пушах о разрешениях от Maude есть действия «Разрешить» и «Отклонить».
Что будет, если не ответить?
В самом Claude Code запросы разрешений остаются открытыми до ответа, так что сессия просто ждёт. Самодельные хуки с ntfy по истечении заданного окна возвращаются к обычному запросу в терминале. Проверьте, что любой ваш хук при сбое закрывает доступ: хук PreToolUse с истёкшим тайм-аутом не блокирует вызов инструмента.
Работает ли это для Codex?
Да. Codex поддерживает хук PermissionRequest, который может разрешать или запрещать, и проекты вроде hookline используют его, чтобы направлять подтверждения Codex в ntfy. Настройка notify в Codex, по сторонним сообщениям, покрывает только завершённые ходы, так что для подтверждений используйте хуки.
Безопасно ли подтверждать команды с телефона?
Настолько, насколько безопасны канал и ваше внимание. Используйте неугадываемый или защищённый аутентификацией топик ntfy, читайте команду целиком перед подтверждением, избегайте общих правил «разрешать всегда» для команд оболочки и запускайте агента от пользователя без root на машине, которую можно пересобрать.

Что изменилось

  • — Первая публикация. Поведение Remote Control и хуков сверено с документацией Anthropic и OpenAI; сведения о репозиториях и значения по умолчанию — из README каждого проекта на эту дату.

Не пропускайте запросы разрешений

«Разрешить» или «Отклонить» прямо из уведомления — для каждого агента на каждом сервере. iOS и Android.

Download Maude on the App Store Get Maude on Google Play