В марте в r/ClaudeAI завирусилась картинка пользователя NinjaGraphics: клавиатура Anthropic на три клавиши — «Allow once», «Allow always» и «Reject». Я посмотрел и подумал: вообще-то это было бы очень удобно.
У меня три монитора. На каждом что-то делает Claude Code, я смотрю в центральный, а запрос разрешения появляется на левом. Дальше знакомый ритуал: взять мышку, доехать до другого монитора, найти нужное окно, кликнуть и нажать единицу.
Из этой шутки вырос press-1 — бесплатная open-source утилита для Windows. Она собирает ждущие запросы Claude Code в одном небольшом попапе поверх окон и даёт ответить хоткеем или мышью, не переключая фокус. В экспериментальном режиме работает и с Codex.
Агент ждёт в окне, на которое вы не смотрите
Запрос появляется там, где работает агент, — а это редко то окно, на которое вы сейчас смотрите. Три монитора, десяток окон на одном экране или свёрнутый терминал под видео на ноутбуке: вы либо идёте искать запрос, либо вообще его не замечаете.
Вторая ситуация хуже. Вы думаете, что агент всё ещё работает, а он уже закончил и несколько минут ждёт ответа в окне под другими окнами.
Само решение обычно занимает секунду: разрешить, запретить или сначала посмотреть внимательнее. Время уходит на дорогу до места, где это решение нужно принять. press-1 убирает именно эту дорогу: показывает запрос поверх текущего окна, подаёт мягкий отключаемый сигнал и принимает ответ глобальным хоткеем или кликом.
Почему не отключить запросы совсем
Резонный вопрос: есть --dangerously-skip-permissions, auto-approve хуки, allow-листы и статьи в духе «хватит жать Allow». Зачем делать отдельный попап, если можно запретить агенту спрашивать?
Я не против автоматизации и сам в основном работаю в auto mode. В этом режиме отдельный классификатор пропускает безопасные действия сам, а спорные всё равно выносит пользователю. Подробнее я разбирал его в статье про Claude Opus 4.7.
Но auto mode — не «делай что хочешь». Claude по-прежнему останавливается на сомнительной команде, спорной правке, согласовании плана или вопросе с выбором. Эти решения я хочу оставлять за собой. press-1 не уменьшает контроль и не пытается принимать решения вместо меня — он только делает оставшиеся запросы мгновенно доступными.
С plan-tango была та же логика: Codex продолжает ревьюить планы Claude Code, я только убрал ручную пересылку между ними. В press-1 решение остаётся у человека, а исчезает беготня по окнам.
Что умеет press-1
- Один попап для всех запросов. Ждущие запросы собираются в стопку карточек, по одной на каждый агент и проект. Если карточек несколько, между ними можно переключаться.
- Контекст прямо в карточке. Видно, кто спрашивает — Claude или Codex — и что он собирается сделать: например,
Bash(npm test)илиEdit(src/config.ts). Длинную команду можно развернуть целиком. - Ровно те кнопки, которые показал агент. Где-то это «Allow / Always allow / Deny», где-то только «Allow / Deny». press-1 повторяет реальную раскладку конкретного запроса.
- Ответ адресуется конкретному запросу. Если он уже исчез или был отменён в исходном окне, press-1 отбросит ответ, а не напечатает цифру в случайном терминале.
- Хоткей, мышь или переход к исходному окну. Из коробки
Ctrl+Win+1/2/3выбирают соответствующую кнопку. Можно кликнуть мышью или нажать кнопку с лупой, чтобы перейти к запросу, ничего не подтверждая. - Любое подходящее железо. Обычная клавиатура, трёхкнопочный макропад, Stream Deck или, как у меня, Logitech MX Creative Console. press-1 слушает и клавиши
F13–F24, которые удобно назначать на внешние устройства.
Claude Code — основной и наиболее отработанный сценарий: для него press-1 изначально и создавался. Он работает в VS Code, Cursor и Windsurf, а также в Windows Terminal, cmd и PowerShell. Интеграция с Codex добавилась позже, поэтому пока у неё статус экспериментальной.
Что press-1 не делает
press-1 не auto-approver. Он ничего не одобряет автоматически, не обходит разрешения и не «доверяет» командам по собственному списку. Каждое нажатие остаётся вашим решением.
Для обычного разрешения инструмент повторяет нативные варианты: разрешить один раз, сохранить правило через «Always allow» или отклонить. Для вопросов, выбора из списка и согласования плана он не отправляет цифры вслепую: показывает карточку и переводит фокус в нужное окно, чтобы вы ответили там.
Установить press-1
Быстрый путь — одна команда в PowerShell:
irm https://raw.githubusercontent.com/egsok/press-1/main/bootstrap.ps1 | iex
Она проверит AutoHotkey v2 и Node.js, предложит установить недостающее через winget, затем установит и запустит press-1. Если предпочитаете сначала посмотреть код, откройте репозиторий на GitHub, склонируйте его и запустите install.ps1 вручную.
Требования и границы:
- Windows 10/11;
- Claude Code 2.1.x; Codex CLI — опционально;
- агент должен работать на этой же машине — запросы удалённой сессии через SSH/tmux press-1 не видит;
- окно ответа живёт 60 минут, после чего ответить можно в исходном терминале;
- когда auto mode принимает решение сам, запроса не возникает и press-1 молчит.
Код открыт под лицензией MIT.
Как одна цифра превратилась в отдельный продукт
Первая версия действительно была маленьким скриптом: нажимаешь хоткей — он отправляет в терминал единицу. Потом появились вопросы. Что делать, если терминалов несколько? Что, если новый запрос возник, пока нажимаешь клавишу? И главное: в одном окне двойка означает «Always allow», а в соседнем — «Deny».
Стало понятно, что слепой хоткей опасен. Нужен интерфейс, который показывает реальный запрос, и доставка ответа именно туда, откуда он пришёл. Так появились карточки (поначалу, прямо скажем, довольно страшные), очередь, таргетный ответ и кнопка перехода к исходному окну.
За спокойным попапом осталась длинная техническая история: почему PID не помог отличить одно окно VS Code от другого, как звук не работал с первой версии и почему под конец я выкинул самый хитрый кусок проекта — после чего всё стало только лучше. Это материал для отдельного лонгрида. Сам press-1 получился в том же режиме, в котором я сейчас делаю почти весь софт: сделано ИИ, проверено человеком.
А мем в итоге оказался не такой уж шуткой. Три физические клавиши для ответов у меня действительно появились — верхним рядом на Logitech MX Creative Console. Но покупать отдельное устройство не обязательно: press-1 работает с обычной клавиатурой и мышью, а на карточке ещё и видно, что именно вы разрешаете.
Если агенты работают на Windows и надоело искать окно, в котором они остановились, — забирайте press-1 на GitHub. Про баги и странные сценарии лучше всего писать в issues.