Одобрять запросы разрешений Claude Code с телефона можно потому, что Claude Code запускает hook PermissionRequest прямо перед показом prompt, и этот hook может сам вернуть решение. Инструмент, который отправляет запрос на телефон, ждёт Вашего нажатия и возвращает allow или deny, позволяет отвечать откуда угодно. Claude Code Notifier делает это с помощью небольшой консольной утилиты ccn для Mac, Windows и Linux и приложения для iPhone или Android.
01Почему запросы разрешений тормозят работу
В режиме разрешений по умолчанию Claude Code спрашивает, прежде чем выполнить большинство shell-команд, отредактировать файлы или загрузить веб-страницу. Prompt ждёт в terminal, пока кто-нибудь не ответит. Если Вы отошли за кофе, вся задача останавливается на этом вопросе, и Вы узнаете об этом, только когда вернётесь.
Обойти это можно тремя способами:
- Реже подтверждать. Добавьте правила allow для команд, которым доверяете, или используйте более разрешительный режим. Это подходит для рутинной работы и описано в статье Режимы разрешений Claude Code.
- Получить уведомление и вернуться. Notification hook сообщает, что prompt ждёт ответа. Но к клавиатуре всё равно придётся вернуться.
- Ответить удалённо. Hook
PermissionRequestпередаёт вопрос на телефон и возвращает Ваш ответ в Claude Code.
Это руководство посвящено третьему варианту.
02Как hook PermissionRequest отвечает за Вас
Claude Code вызывает PermissionRequest, когда для вызова инструмента нужно решение о разрешении. Hook получает на стандартный ввод JSON с полями tool_name и tool_input (например, команда Bash), а также необязательный список permission_suggestions — правил, которые Claude Code предложил бы сохранить.
Hook отвечает, выводя JSON такого вида:
{
"hookSpecificOutput": {
"hookEventName": "PermissionRequest",
"decision": {
"behavior": "allow"
}
}
}
behavior принимает значение allow или deny. При отказе можно добавить message, чтобы объяснить Claude причину, и interrupt: true, чтобы полностью остановить Claude. При одобрении updatedPermissions может применить правила разрешений, чтобы Вас больше не спрашивали. Если hook ничего не вернёт, Claude Code покажет обычный prompt.
Итак, у hook для удалённого одобрения три задачи: отправить запрос туда, где Вы его увидите, дождаться ответа и вывести правильный JSON до истечения таймаута. Полный список полей и рабочий скрипт — в статье Ответ на запросы разрешений из hook.
Регистрация hook
Hooks хранятся в ~/.claude/settings.json (для всех проектов) или в .claude/settings.json (для одного проекта):
{
"hooks": {
"PermissionRequest": [
{
"matcher": "*",
"hooks": [
{ "type": "command", "command": "/path/to/your-approval-script" }
]
}
]
}
}
Matcher фильтрует по имени инструмента, поэтому "Bash" будет отправлять на телефон только shell-команды. У command hooks таймаут по умолчанию — 600 секунд, и это предел того, сколько hook может Вас ждать.
03Своими силами
Можно сделать и самодельный вариант. Типичная схема: hook отправляет запрос в push-сервис, например ntfy, с двумя кнопками действий, которые обращаются к небольшому веб-endpoint, и опрашивает этот endpoint, пока не придёт ответ или не истечёт время. Отправку уведомлений описывает статья Push-уведомления Claude Code через ntfy.
Больше всего времени уходит на граничные случаи:
- Вы за клавиатурой. Если hook всегда ждёт телефона, Вы не сможете ответить в terminal, пока он ждёт. Хороший hook замечает, что Вы на месте, и не мешает.
- Таймауты. Hook должен сдаться раньше таймаута Claude Code и корректно передать управление обратно.
- Доверие. Любой, у кого есть доступ к Вашему callback-endpoint, может одобрять команды на Вашем компьютере. Нужна аутентификация.
- Несколько сессий. Каждый запрос должен попасть в нужную сессию и вернуться в неё же.
Если Вам нравится такое собирать, это хороший проект на выходные. Если нужно, чтобы всё работало уже сегодня, готовый инструмент сэкономит силы.
04Использование Claude Code Notifier
Claude Code Notifier — независимый инструмент от TouchTap Ltd. Он не создан Anthropic и не связан с ней. Он состоит из двух частей: ccn — бесплатного инструмента командной строки для Mac, Windows и Linux — и приложений для iPhone и Android.
1. Установите ccn
На Mac и Linux:
curl -fsSL https://claudecodenotifier.com/install.sh | sh
В Windows, в PowerShell (поддержка Windows в бета-версии):
irm https://claudecodenotifier.com/install.ps1 | iex
Установка через Homebrew, npm и плагин описана на странице ccn. При установке в ~/.claude/settings.json добавляются семь hook-записей, каждая из которых запускает ccn hook, а также сохраняется резервная копия файла. Одна из них — hook PermissionRequest. ccn работает несколько миллисекунд при вызове из Claude Code и завершается. В фоне ничего не работает, и всё функционирует в любом terminal, включая встроенные в IDE.
2. Подключите телефон
Выполните ccn pair и отсканируйте QR-код или введите 6-значный код из приложения. Пошаговая инструкция для каждой ОС — в статье Подключение телефона к Claude Code.
3. Отвечайте из уведомления
Когда Claude нужно разрешение, а Вас нет рядом, телефон показывает, что именно он хочет сделать, например какую команду запустить. Вы можете:
- Разрешить один раз — только для этого вызова.
- Разрешить на сессию — чтобы такие же запросы в этой сессии больше не появлялись.
- Отклонить — и Claude продолжит, зная об отказе.
Hook возвращает Ваш ответ, и Claude продолжает работу.
Что происходит, когда Вы за столом
ccn проверяет, на месте ли Вы. Если Вы что-то вводили в последние 30 секунд, ожидания нет: terminal спрашивает как обычно, а на телефон приходит максимум уведомление. Если Вас нет, terminal ждёт ответа с телефона до заданного Вами предела и прекращает ждать, как только Вы коснётесь клавиатуры. Так что ответить всегда можно там, где удобнее.
Предел задаётся настройкой:
ccn config set hold_ceiling_seconds 900
Допустимы значения от 30 до 3600 секунд, по умолчанию — 600. presence_threshold_seconds меняет 30-секундное окно. Большинство настроек также можно изменить для каждого компьютера в приложении на телефоне.
Проверка работы
ccn doctor # checks hooks, credentials, server connection and presence detection
ccn test # sends a test notification
Приложения для телефона скачиваются бесплатно, а для использования нужна подписка или пожизненная покупка. См. цены. Без телефона ccn всё равно бесплатно показывает уведомление на компьютере, когда Claude нужно разрешение.
05А ещё — одобряйте реже
Удалённое подтверждение лучше всего работает в связке с разумными allow-правилами. Если Вы подтверждаете npm test по двадцать раз в день, добавьте правило вроде Bash(npm test *) в permissions.allow, а телефон оставьте для запросов, которые действительно стоит посмотреть. Прежде чем подтверждать с маленького экрана, прочитайте команду. Что именно проверять, описано в статье Безопасно ли подтверждать действия Claude Code с телефона?
06FAQ
Может ли Claude Code запрашивать разрешения на телефоне без дополнительных инструментов?
Функция Remote Control от Anthropic на поддерживаемых тарифах позволяет продолжить локальную сессию из приложения Claude или на claude.ai/code, в том числе отвечать на запросы. Инструмент на основе hook, такой как Claude Code Notifier, работает иначе: ему не нужно включать Remote Control, и он присылает только те моменты, когда нужны именно Вы. Сравнение — в статье Работа с Claude Code с телефона.
Что будет, если я не отвечу на телефоне?
С ccn hook ждёт не дольше, чем задано в настройке hold_ceiling_seconds. Если Вы вернётесь и первым делом коснётесь клавиатуры, ожидание прекратится, и ответить можно будет прямо в terminal.
Меняет ли «разрешить на эту сессию» мой settings.json?
Нет. Это действует только в рамках текущей сессии. Чтобы разрешить что-то навсегда, добавьте allow-правило в /permissions или в файл настроек.
Работает ли это на Windows и Linux?
Да. ccn работает на Mac, Windows и Linux, и мобильное приложение поддерживает все три системы. Поддержка Windows находится в бета-версии.
Можно ли использовать его с несколькими компьютерами?
Да. Один телефон можно связать с несколькими компьютерами, а к одному компьютеру — подключить несколько телефонов. ccn devices показывает связанные телефоны и позволяет отозвать доступ.