5 сентября 2026 года на Hacker News появился Show HN проекта ActraDeck с заголовком «Put risky coding-agent actions back in front of a human». Сюжет попал в точку: за предшествующую неделю Manifold Security показала GitSpawn, где агент выполняет код из конфига репозитория до запроса доверия, а Johann Rehberger разобрал атаку на auto mode с вероятностью успеха до 80%. Агенты становятся автономнее, и вопрос «кто держит последнюю кнопку» перестал быть риторическим. ActraDeck — не очередной детектор промпт-инъекций и не песочница, а локальный «кокпит»: он перехватывает рискованную команду агента, держит её до решения человека и при молчании отклоняет сам. Ниже — как проект устроен, что считает рискованным, как поставить рядом с Claude Code и Codex и где проходит его честная граница. Версии и статусы — на момент публикации, 13.09.2026.
Почему это понадобилось: человек уходит из цикла
Линия сюжета безопасности августа—сентября 2026 складывается из одного паттерна — решения всё чаще принимает не человек, а сам агент:
- GitSpawn (разбор Manifold Security, 01.09): кодинг-агенты запускают git-команды на старте, до workspace-trust промпта, и код из
.git/configчужого репозитория выполняется без единого подтверждения. - Атака Rehberger на auto mode (кейс 26.08): классификатор Claude Code одобрил создание вредоносного процесса и отказал в команде его остановить — с вероятностью 60–80% агент сам исполнял код из ZIP.
- Ночные прогоны (опыт mouse.dev) и режимы вроде
--dangerously-skip-permissionsи--yoloубирают человека из цикла намеренно — ради скорости.
Каждая находка — это «действие, которое произошло, потому что его никто не подтверждал». Общий гайд по защите из таких угроз собран в статье про безопасность ИИ-агентов. ActraDeck атакует проблему с другой стороны: не пытается оценить «злонамеренность» намерения модели, а берёт конкретную опасную операцию и ставит её на паузу до явного ответа оператора.
Что такое ActraDeck
Определение из README проекта на GitHub:
Put risky coding-agent actions back in front of a human. ActraDeck is a local cockpit for Claude Code and Codex. It surfaces detected high-risk actions for review where the agent mode supports approval relay, masks detected secrets before ActraDeck stores them, and keeps each session replayable across agents.
Верните рискованные действия кодинг-агента человеку. ActraDeck — локальный кокпит для Claude Code и Codex. Он выводит обнаруженные действия высокого риска на ревью там, где режим агента поддерживает relay одобрений, маскирует найденные секреты до того, как ActraDeck их сохранит, и хранит каждую сессию воспроизводимой.
— README ActraDeck, 05.09.2026
Главный пример в README — именно тот случай, ради которого проект делают:
Claude Code requests:
rm -rf ./important-directory
[HIGH RISK] recursive filesystem delete detected
[HELD] waiting for your decision
[DENIED] no approval received; safe-side timeout

rm -rf ./important-directory перехватывается и отклоняется по таймауту. Реальный скриншот.Ключевое отличие от обычного permission-промпта агента — кто принимает решение и что происходит при молчании. Встроенные разрешения Claude Code спрашивают у того, кто сидит в терминале; ActraDeck забирает событие в отдельный веб-интерфейс (кокпит) и применяет правило «нет ответа — отказ». Это работает даже в автономных режимах: шлюз перехватывает выбранные категории риска и в --dangerously-skip-permissions, то есть там, где агент по дизайну сам себе всё разрешает.
Насколько зрелый проект: честная оценка
ActraDeck — молодой инструмент, и это надо говорить прямо, без приукрашивания.
- Публичный запуск — Show HN от 05.09.2026 (тред 49573255). Репозиторий на GitHub открыт недавно, проект до этого развивался приватно.
- Версия — v0.9.0 (релиз от 01.09.2026, до Show HN), npm-пакет
actradeck@0.9.0, Docker-образghcr.io/actradeck/actradeck. Лицензия Apache-2.0, код — TypeScript (pnpm monorepo). - Статус в собственном README: «early, active development (pre-1.0). Detection is best-effort, not a sandbox or an absolute security boundary» — ранняя активная разработка, детекция «по возможности», это не песочница и не абсолютная граница безопасности.
Показательна и история коммитов: в логе видна цепочка chore(oss-sync): sync from private … — проект выкладывался в открытый доступ из приватного репозитория. По звёздам и форкам на GitHub он пока малозаметен, а в день запуска тред на Hacker News был практически пустым — 2 очка и ни одного комментария. То есть перед нами не проверенный годами продукт, а свежий open-source инструмент, который стоит пробовать с расчётом на то, что многое ещё будет меняться.

Что ActraDeck считает рискованным
Проект использует закрытое публичное перечисление категорий риска — политики не содержат «сырых» команд, а классификатор сопоставляет операцию с категориями. Категории из документации approval policy:
| Категория | Что ловит | По умолчанию |
|---|---|---|
recursive-rm |
rm -rf, find -delete/-exec, массовое удаление файлов |
вкл |
disk-destroy |
mkfs, dd, shred, wipefs, parted, запись в блочные устройства |
вкл |
history-rewrite |
git push --force, git reset --hard, git clean -f |
вкл |
db-drop |
DROP TABLE/DROP DATABASE/DROP SCHEMA/TRUNCATE TABLE, dropdb, mysqladmin … drop, dropDatabase(, FLUSHALL/FLUSHDB |
вкл |
fork-bomb |
самовоспроизводящиеся shell-паттерны | вкл |
secret-egress |
сетевая передача (curl/wget/nc/scp…) с секретом прямо в команде |
вкл |
high-risk-other |
прочие высокорисковые или структурно неразбираемые исполнения (подстраховка) | вкл |
inline-code |
sh -c, python -c, eval, curl \| sh, подстановки команд |
вкл |
perm-change |
chmod -R, всемирно-записываемые chmod, рекурсивный chown |
выкл |
secret-file-edit |
правки .env, *.pem, id_rsa, kubeconfig |
выкл |
external-tool |
MCP-вызовы, WebFetch | выкл |
migrate-prod |
миграции БД, упоминания «production» | выкл |
Пресет по умолчанию — восемь включённых категорий: необратимые операции с большим радиусом поражения плюс произвольное инлайн-исполнение кода. Четыре выключенные склонны к ложным срабатываниям, поэтому их включают осознанно. Важная деталь реализации: db-drop — это буквальный список SQL-форм, а не семантический детектор. Разработчики сами пишут в документации, что db.collection.drop() в Mongo или DROP TABLESPACE не распознаются — категория работает как «пол, а не гарантия».
Как проходит цикл одобрения

Цикл короткий:
- Агент (Claude Code или Codex) запрашивает операцию.
- Сайдкар на машине классифицирует её структурно и определяет категории риска.
- Если категория пересекается с включённым набором — событие уходит в Approval Inbox кокпита с пометкой
[HELD]. - Человек в веб-интерфейсе выбирает: allow, deny или allow-for-session.
- Решение релеится обратно агенту. Нет ответа —
[DENIED] no approval received; safe-side timeout.
Правило «таймаут = отказ» — принципиальное. Для автономных прогонов это значит, что сессия без присмотра не «зависает на разрешении», а безопасно деградирует: операция не выполняется. Механизм называется bypass/YOLO gate и включён по умолчанию: он перехватывает оператора-выбранные категории даже в --dangerously-skip-permissions / --yolo. Claude Code чтит deny от хуков даже при bypassPermissions, поэтому для него это реальное предотвращение, а не алерт. Полностью выключить шлюз можно переменной ACTRADECK_BYPASS_CATASTROPHIC_GATE=0.
Для каких агентов и в каких режимах
Подключение агента бывает двух видов — Attach и Managed. Таблица из README выше показывает разницу:
- Claude Code (Attach) — наблюдение + relay одобрений. Запуск агента не меняется:
cd ~/project && claude, сессия появляется в кокпите. - Codex (Attach) — только наблюдение: релиз одобрений остаётся в собственном TUI Codex. Детекция видит, но не может заблокировать.
- Codex (Managed) — ActraDeck сам запускает Codex через App Server и мостит его approval-запросы в кокпит:
./scripts/actradeck codex "refactor the payment module". Managed Mode принимает одну команду и работает в foreground; перехватить уже запущенную Attach-сессию он не может.
То есть «вернуть решение человеку» в полном смысле слова сегодня можно для Claude Code (в Attach) и для Codex (в Managed). Для Codex в обычном Attach это пока страховка с аудитом, а не блокировка.
Маскирование секретов: два слоя
Вторая задача ActraDeck — не сохранять секреты, которые мелькают в выводе агента. Маскирование двухслойное:

- Сайдкар (до локального сохранения и передачи) — маскирует распознанные секреты, прежде чем событие попадёт в локальный лог.
- Backend-слой (до записи в хранилище) — безусловно применяет маскирование ещё раз ко всему, что получено через публичный ingestion-контракт. Это важно для сторонних адаптеров: они достигают backend-редакции только после первого сетевого перехода.
Сам проект прямо пишет: «masks detected secrets before ActraDeck stores them» — то есть маскируется распознанное, а не всё подряд. Детекция секретов построена на структурном и паттерновом сопоставлении, и у неё есть границы (ниже в ограничениях).
Аудит и replay
Третья функция — локальный аудит, который можно пересматривать. События пишутся в append-only локальную историю (embedded PostgreSQL PGlite, каталог ~/.actradeck/pgdata по умолчанию). Из кокпита можно:
- посмотреть, что агент пытался сделать и как ответил оператор;
- выгрузить аудит в HTML, Markdown или JSON с SHA-256 манифестом целостности;
- включить опциональное подписание Ed25519 (со специально задокументированной областью действия).
Общая статистика использования (./scripts/actradeck usage --since 30d) отдаёт только дневные агрегаты в UTC и не содержит содержимого аудита. Центральная телеметрия выключена по умолчанию, а включается явно через Settings → Privacy или CLI.
Установка: три пути
Первый — попробовать без установки агентов. Docker-образ поднимает кокпит с встроенной демо-кнопкой:
docker run --rm \
-p 127.0.0.1:55400:55400 \
-v actradeck_pgdata:/data \
ghcr.io/actradeck/actradeck:latest
Открываете http://localhost:55400 и жмёте «Run the 30-second safety demo»: синтетическая разрушительная команда проходит весь путь — детект → карточка одобрения → маскирование → аудит. Команда при этом никогда не выполняется.
Второй — нативная установка рядом с реальными агентами. Требуется git, Node.js 22.16+ и pnpm, отдельная база данных не нужна:
curl --proto '=https' --tlsv1.2 -fsSL \
https://raw.githubusercontent.com/actradeck/actradeck/main/scripts/install.sh | sh
Дальше — запуск всех слоёв (./scripts/actradeck up) и обычный старт агента. Кокпит слушает http://localhost:55400 (backend :55410). Инсталлятор — это загрузка и исполнение скрипта, поэтому README советует сначала скачать и прочитать его, а затем запускать; есть и верифицированный путь с проверкой контрольной суммы релиза (ACTRADECK_VERIFY=1 ACTRADECK_REF=v0.9.0 sh install.sh).
Третий — для тех, кто не хочет тянуть зависимости: npx actradeck@latest demo печатает синтетический предпросмотр цикла detect → hold → deny → redact → record без сетевых и файловых побочных эффектов.
Настройка политик под свои репозитории
Машина-дефолт и пер-репозиторные правила задаются в разделе «Approval policy» кокпита: например, гейтить migrate-prod только в продакшн-репо или полностью отключить гейт в черновом репозитории (пустой набор категорий = «не гейтить этот репо»). Политики сохраняются в ~/.actradeck/approvals/policy.json (права 0600), а ключевая деталь: хранилище «memory-authoritative» — демоны читают файл один раз при старте и не перечитывают его на лету. Агент, который отредактирует policy.json посреди сессии, не сможет ослабить живой гейт. Обратная сторона: ручные правки файла требуют перезапуска демона, изменения через UI применяются сразу.
Опциональный постоянный allowlist (ACTRADECK_PERSIST_APPROVALS=1) позволяет выбрать «разрешать и в будущих сессиях» — в allowlist.json пишется SHA-256 подпись команды (не сама команда) с TTL по умолчанию 7 дней. Структурный гейт не даёт занести в allowlist опасное: команды с пайпами и подстановками (curl … | sh), sudo/su, инлайн-исполнение (sh -c, node -e), публикацию, сетевые передачи, деструктивные команды файловой системы. Эти категории никогда не получают опцию постоянного разрешения, сколько раз их ни одобряй.
Практический чек-лист внедрения
- Начните с демо, чтобы увидеть цикл целиком: Docker-образ или
npx actradeck@latest demo. - Поставьте нативную установку на машину с Node 22.16+ и pnpm; проверьте
./scripts/actradeck doctor. - Запустите
claudeв обычном режиме — сессия появится в кокпите с состоянием и pending-одобрениями. - Для Codex с полноценным relay используйте Managed Mode:
./scripts/actradeck codex "…", а не голыйcodex. - Оставьте пресет по умолчанию на первую неделю, потом включите
perm-changeиsecret-file-edit, если ложных срабатываний мало. - Настройте пер-репо политики: продакшн-репозиторий гейтить жёстче, черновик — свободнее.
- Проверьте реакцию на таймаут: запустите автономную сессию и не отвечайте на карточку — операция должна отклоняться сама.
- Смотрите аудит после ночных прогонов: что агент пытался сделать и как среагировал гейт.
Ограничения — честно
Проект сам перечисляет их в README в разделе «Honest limits», и их стоит повторить целиком:
- Это не песочница. Классификация риска и маскирование — структурный и паттерновый матчинг best-effort. Новые, обфусцированные или опосредованные интерпретатором формы могут быть пропущены. Статус проекта — pre-1.0, активная разработка.
- Relay зависит от агента и режима. Codex в Attach-режиме остаётся observe-only: детекция видит, но не блокирует. Полноценное «вернуть человеку» для Codex — только Managed Mode.
- Секрет-детекция ловит инлайн.
curl --data @.env(передача файла-ссылки) не распознаётся какsecret-egress— то же ограничение, что у маскирования. Включение категорийsecret-file-editиinline-codeсужает, но не закрывает этот зазор. - Модель угроз — один оператор. По умолчанию это локальная файловая система и loopback. Любой, у кого есть права вашего OS-пользователя, может выполнять команды и напрямую, в обход ActraDeck.
- Memory-authoritative — пол, а не защита от противника. Агент может исполнять код вообще вне сайдкара; гейт управляет только тем, что проходит через хуки ActraDeck.
- Не enterprise-платформа. Это не многопользовательский control plane для компаний, не полный shell-сэндбокс и не гарантия распознавания каждого секрета.
- Платформа ещё сырая. macOS-путь через launchd помечен в документации как экспериментальный (структурно проверен, но ещё не гонялся на реальном Mac); часть функций меняется между релизами 0.x.
Для российского разработчика отдельно важно: ограничения самих агентов, которых ActraDeck оборачивает, он не снимает. Если Claude Code или Codex недоступны из вашего региона — «вернуть решение человеку» не поможет с самим доступом.
Российские реалии
Сам ActraDeck в России работает без ограничений: это open-source проект под Apache-2.0, ставится локально и по умолчанию слушает только loopback — облачного аккаунта не требуется. GitHub, npm и raw.githubusercontent.com из РФ доступны без VPN, так что и установка, и сборка из исходников штатные. Платить не за что — проект бесплатный, подписки нет.
Ограничения начинаются там, где в дело вступают оборачиваемые агенты:
- Claude Code (Anthropic) — Россия не входит в список поддерживаемых стран: claude.ai, подписка и API из российского IP без VPN не работают, оплата российскими картами невозможна. Реальные пути — зарубежные/виртуальные карты, посредники, крипта. Практика запуска Claude в dev-контейнерах из РФ разобрана в гайде на DTF.
- Codex (OpenAI) — та же картина: из российских IP напрямую не работает, оплата — зарубежными картами. Подробно про оплату ChatGPT/Codex из РФ — гайд Tehrevizor на Habr.
- Обходной путь для теста ActraDeck без Claude/Codex — в проекте есть адаптеры для opencode и Gemini CLI (оба пока observe-only), а это инструменты, работающие из РФ. Наблюдение, маскирование и аудит можно проверить на них, relay одобрений — нет.
Русскоязычных разборов именно ActraDeck на момент публикации нет: поиск по Habr и vc.ru пуст, проект появился на неделе. Общие материалы по безопасности кодинг-агентов в рунете есть — серия про LLM-песочницы с Docker на Habr, корпоративная песочница от МТС на Habr, но именно этот инструмент ещё не освещён.
Вывод
ActraDeck — ответ на конкретную дыру, которую показали находки августа—сентября: чем автономнее агент, тем чаще решение о разрушительном действии принимает не человек. Инструмент не пытается сделать модель «послушнее» — он возвращает оператору последнее слово по операциям с большим радиусом поражения и применяет правило «нет ответа — отказ». Плюс к этому маскирование секретов и append-only аудит, который можно пересматривать.
Стоит отдавать себе отчёт в зрелости: проект выложен публично 05.09.2026, версия 0.9.0, статус pre-1.0, детекция — best-effort, а не песочница. Для продакшн-контура одного ActraDeck мало: он страхует от катастрофических команд и утёкших секретов в выводе, но не заменяет изоляцию. Разумная связка на сентябрь 2026 — ActraDeck как «стоп-кран» поверх уже существующей защиты: песочницы для ИИ-агентов, схема изолированного агента с agent-only ключом (кейс Micah Lee) и флаг --restricted для Claude Code. Дальше по теме безопасности — общий гайд и разбор GitSpawn.
