Подтверждения
Как подтверждать запросы разрешений Claude Code (и Codex) с телефона
Чаще всего агент перестаёт продвигаться из-за запроса разрешения, которого никто не увидел. Ответить на него из кармана можно тремя способами: собственные push-уведомления Claude Code, самодельный хук с ntfy или приложение с входящими. Вот как каждый работает с 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:
- Запустите сессию командой
claude remote-control(серверный режим) илиclaude --remote-controlлибо введите/remote-controlв запущенной сессии. - Войдите в приложение Claude на телефоне с тем же аккаунтом и разрешите уведомления.
- В терминале выполните
/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. Старая настройка Codexnotifyзапускает программу, когда ход завершён. По сообщениям в сторонних разборах, для запросов на подтверждение она не срабатывает, так что для подтверждений используйте хуки. Об официальном пути 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-уведомления?
/config. Нужен тариф Pro, Max, Team или Enterprise; вход с ключом API не поддерживается.Можно ли разрешить или запретить прямо с экрана блокировки?
Что будет, если не ответить?
PreToolUse с истёкшим тайм-аутом не блокирует вызов инструмента.Работает ли это для Codex?
PermissionRequest, который может разрешать или запрещать, и проекты вроде hookline используют его, чтобы направлять подтверждения Codex в ntfy. Настройка notify в Codex, по сторонним сообщениям, покрывает только завершённые ходы, так что для подтверждений используйте хуки.Безопасно ли подтверждать команды с телефона?
Что изменилось
- — Первая публикация. Поведение Remote Control и хуков сверено с документацией Anthropic и OpenAI; сведения о репозиториях и значения по умолчанию — из README каждого проекта на эту дату.