approve-review — команда для Claude Code: окно одобрения ревью
Открывает окно, в котором действия по ревью проходят без проверки политики. Нужна, когда агенту пора одобрить PR или комментарий.
/plugin marketplace add wshobson/agents
/plugin install review-agent-governance@claude-code-workflowsЧто делает approve-review
Команда создаёт в корне проекта файл-флаг ./.review-approved. Пока он на месте, правила Cedar для действий по ревью (проверки PR, комментарии, слияния, правки CI) не применяются. Всё остальное по-прежнему идёт через политику.
Если передать причину строкой, она попадёт и в сам флаг, и в запись с меткой времени в ./review-receipts/approvals/. Причина с пробелами сохраняется целиком, потому что аргумент берётся как $ARGUMENTS, а перед записью в JSON экранируется через python3. Журнал одобрений не подписан: подпись получают только чеки вызовов инструментов через protect-mcp, и в них не видно, что окно было открыто.
Окно живёт до тех пор, пока вы не удалите флаг командой rm ./.review-approved или не перезапустите сессию. Забыли закрыть — агент может выполнить ещё несколько действий по ревью без запроса. Закрывайте сразу после одобренного действия.
Какие задачи решает
- одобрить проверку PR без ручного подтверждения каждого шага
- зафиксировать причину одобрения с меткой времени
- пропустить комментарий или слияние мимо правил политики
- оставить след одобрения в отдельном журнале
- быстро закрыть окно после завершения действия
Примеры запросов агенту
- /approve-review "Одобряю LGTM по PR #42 после визуальной проверки"
- /approve-review
- /list-pending
Как установить approve-review
1Через маркетплейс плагинов
/plugin marketplace add wshobson/agents/plugin install review-agent-governance@claude-code-workflows2Вручную: положить файлы
.claude/commands/approve-review.mdВызов — /approve-review. Для всех проектов — ~/.claude/commands/
Вручную: положить файлы
~/.codex/prompts/approve-review.mdВызов — /prompts:approve-review. В Codex этот формат помечен устаревшим, замена — скиллы
Вручную: положить файлы
.github/prompts/approve-review.prompt.mdВручную: положить файлы
.gemini/commands/approve-review.tomlGemini хранит команды в TOML: текст запроса — в поле prompt
Вопросы о approve-review
Как установить approve-review в Claude?
Добавьте маркетплейс: /plugin marketplace add wshobson/agents, затем поставьте плагин: /plugin install review-agent-governance@claude-code-workflows. Файл команды ляжет в .claude/commands/approve-review.md.
Что делает approve-review?
Создаёт файл ./.review-approved в корне проекта и тем самым открывает окно, в котором действия по ревью обходят правила политики. Причину, если она указана, пишет во флаг и в журнал ./review-receipts/approvals/.
Чем журнал одобрений отличается от подписанных чеков?
Записи в ./review-receipts/approvals/ не подписаны. Подпись ставится только на чеки вызовов инструментов через protect-mcp, и в них не отражено, что окно было открыто.
Исходный текст
approve-review.md · MIT
---
description: "Open a review-action approval window by creating the ./.review-approved flag file. Takes an optional reason string that is recorded in the flag file and an unsigned approval log."
argument-hint: "[reason for approval]"
---
# Approve Review
Open a human-approval window for review-surface actions (PR reviews,
comments, merges, CI edits). The window stays open until you remove the
flag file with `rm ./.review-approved` or restart the session.
## Usage
```
/approve-review "Approving LGTM on PR #42 after visual inspection"
/approve-review # no reason, still opens the window
```
## What this does
1. Creates a `./.review-approved` flag file in the project root.
2. If the user provided a reason, writes it into the file and into a
timestamped entry under `./review-receipts/approvals/`.
3. Prints a confirmation with the timestamp and, if provided, the reason.
4. Reminds the user to close the window with `rm ./.review-approved` as
soon as the approved action completes.
## Implementation
Run this in a shell. Capture the full user argument as `$ARGUMENTS`
(the marketplace slash-command convention) so a reason with spaces is
preserved verbatim.
```bash
REASON="$ARGUMENTS"
TS="$(date -u +%Y-%m-%dT%H:%M:%SZ)"
FLAG="./.review-approved"
# JSON-escape the reason so quotes, backslashes, newlines do not break
# the approval-record JSON below.
REASON_ESCAPED="$(printf '%s' "$REASON" | python3 -c 'import json,sys; print(json.dumps(sys.stdin.read()))')"
# Write the flag file (human-readable key=value, not JSON).
{
echo "approved_at=$TS"
if [ -n "$REASON" ]; then
echo "reason=$REASON"
fi
} > "$FLAG"
# Record the approval. This is a plain JSON log file, NOT a signed
# receipt. The README explicitly notes that approval records are not
# signed by protect-mcp; only the PostToolUse tool-call receipts flow
# through the signer.
mkdir -p ./review-receipts/approvals
cat > "./review-receipts/approvals/$TS.json" <<JSON
{
"approved_at": "$TS",
"reason": $REASON_ESCAPED,
"flag_file": "$FLAG"
}
JSON
# Confirmation to the user
echo "Approval window opened at $TS"
if [ -n "$REASON" ]; then
echo "Reason: $REASON"
fi
echo ""
echo "Close the window with: rm $FLAG"
echo "The next tool call will be permitted without policy evaluation."
```
## What to show the user
```
Approval window opened at 2026-04-17T12:34:56Z
Reason: Approving LGTM on PR #42 after visual inspection
Close the window with: rm ./.review-approved
The next tool call will be permitted without policy evaluation.
Remember: every tool call that runs in the window still gets a signed
receipt, but the receipt does not show that the window was open.
The approval log records the reason and time, and it is not signed.
```
## Important notes
- **This does NOT grant blanket approval.** It opens a short window during
which the Cedar policy's review-surface rules are bypassed. Everything
else still runs through the policy.
- **Every action in the window still gets a signed receipt.** The receipt
does not record the window or the reason. Only the unsigned approval log
under `./review-receipts/approvals/` does.
- **The window stays open until closed.** If you forget to `rm ./.review-approved`,
the agent could make additional review actions without prompting. Close
the window immediately after the approved action.
- **The flag file is session-scoped.** A new Claude Code session in the same
project directory starts clean if the file was removed at the end of the
previous session.
## References
- Plugin README: `../README.md`
- Policy authoring: `../agents/review-policy-author.md`
- Close the window: `rm ./.review-approved`
- See calls blocked in this session: `/list-pending`
© Tom Farley · MIT · wshobson/agents