Підтвердження
Як підтверджувати запити дозволів 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 кожного проєкту на цю дату.