Підтвердження

Як підтверджувати запити дозволів 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