К основному содержанию
хук

subagent-read-only-guard — хук для Claude Code: обзор и установка

Хук PreToolUse запрещает субагентам Claude Code менять файлы и выполнять небезопасные команды в терминале.

Установить в Claude Code · Через claude-code-templates Все способы и платформы ↓
npx claude-code-templates@latest --hook security/subagent-read-only-guard
Открыть на GitHub

Что делает subagent-read-only-guard

Скрипт проверяет поле agent_id, которое Claude Code добавляет только во вызовы от субагентов. Если запрос пришёл от субагента, хук сразу отклоняет вызовы инструментов Edit, Write, MultiEdit, NotebookEdit и PowerShell. Основного диалога эти правила не касаются.

Команды в Bash и Monitor сверяются со списком безопасных утилит: ls, cat, grep, rg, find, jq, sort, cd и чтения в git. Любое перенаправление в файл, запуск подоболочек, раскрытие переменных вроде $VAR, префиксы окружения или флаг git -c вызывают отказ. Ошибки парсинга скрипт тоже трактует как запрет.

Хук не защищает от вызовов через инструменты MCP и не блокирует чтение файлов с секретами вроде .env, поэтому для них нужна отдельная защита.

Какие задачи решает

  • запретить субагентам редактировать и перезаписывать исходный код
  • ограничить команды в Bash списком безопасных утилит вроде grep и ls
  • заблокировать запуск PowerShell и перенаправление вывода в файлы
  • исключить случайную модификацию репозитория при фоновом поиске

Примеры запросов агенту

  • Запусти субагента, чтобы он изучил структуру модулей в папке src/
  • Проверь историю коммитов через субагента и найди, когда изменился конфиг
  • Найди все вызовы устаревшего API во всех подпроектах через субагентов

Как установить subagent-read-only-guard

1Через claude-code-templates

npx claude-code-templates@latest --hook security/subagent-read-only-guard

2Вручную: положить файлы

.claude/settings.json

Блок hooks: событие (PreToolUse, PostToolUse, Stop…) → команда. Личные — ~/.claude/settings.json

По шагам, с командами для каждой платформы: Хуки Claude Code: что это, где настраивать и как запретить опасную команду

Вопросы о subagent-read-only-guard

Как установить subagent-read-only-guard в Claude Code?

Выполните команду npx claude-code-templates@latest --hook security/subagent-read-only-guard. Шаблон скопирует скрипт .claude/hooks/subagent-read-only-guard.py и пропишет хук PreToolUse в .claude/settings.json.

Зачем нужен хук subagent-read-only-guard?

Он гарантирует режим только для чтения для вспомогательных субагентов, запрещая им править код и запускать изменяющие команды. При этом главный сеанс сохраняет полный доступ к инструментам редактирования.

Что не перехватывает этот хук?

Защита не распространяется на вызовы сторонних MCP-серверов. Также хук не запрещает субагентам читать конфиги с секретами вроде .env, поэтому автор рекомендует совмещать его с правилом env-file-protection.

Исходный текст

subagent-read-only-guard.json · MIT
{
  "description": "Enforces read-only subagents. A PreToolUse hook denies Edit, Write, MultiEdit, NotebookEdit and PowerShell, and any Bash or Monitor command that is not read-only, when the call comes from a subagent (detected by the agent_id field Claude Code adds only inside subagents; tested on Claude Code 2.1.296). Shell commands pass only when every command is a bare program from a short read-only allowlist (ls, cat, grep, rg, find, jq, sort, sed -n 'N,Mp', cd, git log/diff/status/show/blame/branch/tag and similar) without the options that make it write or run other programs, including abbreviated long options. Redirection to files, command substitution, shell expansion ($VAR, {a,b}), subshells, env-var prefixes, git -c and anything the guard cannot classify are denied, including its own errors. The main conversation is never affected. Not covered: MCP tools, and git diff/blame running diff or textconv drivers already configured in the repo. Reading secrets (.env, printenv) is still allowed, so pair it with env-file-protection. Pairs with the hooks/subagents-explore-only setting, which tells subagents up front that they are exploration-only.",
  "supportingFiles": [
    {
      "source": "subagent-read-only-guard.py",
      "destination": ".claude/hooks/subagent-read-only-guard.py",
      "executable": true
    }
  ],
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "Edit|Write|MultiEdit|NotebookEdit|PowerShell|Bash|Monitor",
        "hooks": [
          {
            "type": "command",
            "command": "python3 .claude/hooks/subagent-read-only-guard.py"
          }
        ]
      }
    ]
  }
}

© davila7 · MIT · davila7/claude-code-templates

Похожие хуки

Все хуки по теме «Настройка агента: память, контекст, субагенты» →

Из того же набора804

Весь набор →
plan-gate Хук проверяет наличие свежей спецификации перед изменением кода и показывает предупреждение, если .spec.md не найден. 182установок force-push-blocker Блокирует попытки Claude Code отправить изменения в Git с флагами принудительной перезаписи истории. 167установок console-log-cleaner Хук ищет вызовы console. при редактировании JavaScript- и TypeScript-файлов в production-ветках. Помогает заметить отладочный вывод до слияния изменений. 165установок change-logger Хук пишет каждое изменение файла в CSV: время, инструмент, путь, действие и детали. Пригодится, когда готовишь демо и нужно показать, что именно агент трогал. 163установок edit-audit-log Хук записывает в проектный журнал путь каждого файла, изменённого инструментом Edit, и время правки. Пригодится, если нужно проследить изменения между сессиями. 103установок ai-bash-guard Перед выполнением bash-команды AI-агент проверяет её на деструктивные паттерны — рекурсивные удаления, force push в защищённые ветки, drop таблиц, утечки учётных данных — и блокирует выполнение с объяснением. 80установок plan-mode-game Хук запускает браузерную игру, когда Claude Code входит в Plan Mode, и показывает ход работы. Подойдёт, если хочется занять паузу, пока агент составляет план. 54установок doordash-group-checkout-gate Хук перепроверяет аллергены в момент оформления группового заказа DoorDash через dd-cli и блокирует оплату, если находит опасное совпадение. 24установок

Спонсоры проекта

Компании, которые помогают держать аналитику открытой