Skip to content

Guide · Agent skill

How to use the Review Agent Approval Gate agent skill

Updated · written with AI from the project's own documentation and checked against our catalogue data

The review-agent-setup skill configures Claude Code so an AI agent cannot take review-surface actions, such as approving or commenting on pull requests, merging, closing issues, publishing releases or editing CI configuration, unless a human opens an approval window first. It is aimed at teams and maintainers who let an agent work with GitHub or GitLab repositories and want a sign-off step and an audit trail. After following this guide you will know what the skill changes, how to install it, how to approve a specific action, and how to check the receipts.

Review Agent Approval Gatewshobson/agents · MIT

Quick start

  1. 1Install the plugin. Run the claude plugin install command for review-agent-governance, or unzip the downloaded skill into ~/.claude/skills/ or .claude/skills/.
  2. 2Copy the default policy. Copy the Cedar policy into your project as ./review-governance.cedar so you can adjust the rules.
  3. 3Create the receipts folder and key. Make ./review-receipts, add the sensitive files to .gitignore, and create ./review-governance.key if it does not exist.
  4. 4Open an approval window. Create ./.review-approved with touch, or run /approve-review with a reason, before the action you want to allow.
  5. 5Let the agent run the action. Ask the agent to perform the review, comment or merge while the window is open.
  6. 6Close the window. Delete ./.review-approved immediately after the action.
  7. 7Verify receipts. Run the offline verifier with your public key to check ./review-receipts/receipts.jsonl.

What the skill makes the agent do

Agent skills are packages of instructions and scripts that Claude Code loads so it can perform a specific workflow. This skill is a setup guide for a governance plugin. Once the plugin is installed, a Cedar policy denies review-surface actions by default. Each attempt, allowed or denied, is meant to produce an Ed25519-signed receipt that can be checked offline with a public key.

The gated actions include posting PR reviews (gh pr review), commenting (gh pr comment, gh issue comment), merging (gh pr merge), closing issues (gh issue close), creating releases (gh release create), editing CI configuration such as .github/workflows/ and .gitlab-ci.yml, and pushing to protected branches such as main, master, release and production.

Check whether you need this skill

The skill's own docs say it is overkill if the agent only edits local files and runs tests. In that case, the docs suggest protect-mcp for general tool-call policy enforcement instead.

It also does not suit unattended CI pipelines, because every approval requires a human to open a window.

  • Good fit: teams where an agent interacts with GitHub or GitLab and needs a human sign-off step
  • Good fit: maintainers who need a record of which agent actions were approved
  • Poor fit: projects where the agent only edits local files and runs tests
  • Poor fit: automated pipelines that need approvals to happen without a person

Install the skill in Claude Code

You can install the plugin with the Claude Code plugin command, or download the skill ZIP from this page and unzip it into ~/.claude/skills/ for personal use or into a project's .claude/skills/ folder. You can also upload the ZIP in the Claude apps under Settings → Capabilities → Skills.

The requirements are Claude Code with plugin support, Node.js and npx (the setup runs npx protect-mcp@0.7.4 and npx @veritasacta/verify@0.9.2), the GitHub CLI (gh) or GitLab CLI for the actions you gate, and a Cedar policy file copied into your project.

  • Install command from the source: claude plugin install wshobson/agents/review-agent-governance
  • Copy the default policy into the project as ./review-governance.cedar
claude plugin install wshobson/agents/review-agent-governance

Set up the policy, receipts directory and signing key

Copy the default policy from the plugin into your project so you can edit it. The source also tells you to create a receipts directory and add three entries to .gitignore so the key, the receipts and the approval flag are not committed.

The key command creates a signing key only if none exists, and it never replaces an existing key. Without a key, receipts are unsigned. Keep the key out of git, because it also holds the private key. Give auditors the publicKey value from ./review-governance.key.

  • Receipts go in ./review-receipts/
  • The key file is ./review-governance.key
  • The approval flag file is ./.review-approved
cp .claude/plugins/review-agent-governance/policies/review-agent-governance.cedar \ ./review-governance.cedar mkdir -p ./review-receipts if [ ! -e ./review-governance.key ]; then d=$(mktemp -d) && npx protect-mcp@0.7.4 init --dir "$d" && mv "$d/keys/gateway.json" ./review-governance.key fi

Approve a single action

Because the policy denies review actions unconditionally, you open an approval window before the action and close it afterward. The simplest method is a flag file. The slash command is an alternative that also records a reason.

The slash command creates ./.review-approved with your reason as a note and writes the reason to an unsigned approval log under ./review-receipts/approvals/. You still need to remove the flag file yourself to close the window.

  • Flag file: create the file, let the agent run the action, then delete it
  • Slash command: /approve-review with a short reason, then delete the flag file when done
  • To see what was blocked in the current session, run /list-pending
touch ./.review-approved # let Claude Code run the review, comment or merge rm ./.review-approved

Verify the receipts

List your receipts, then verify them offline with the public key. Exit code 0 means every receipt verified. Exit code 1 means a receipt failed, because it was altered, the key is wrong or a line is malformed. Exit code 2 means the receipts file could not be read.

A denied call never runs, so it has no receipt. The receipts show allowed actions; use /list-pending to see blocked ones.

ls -la ./review-receipts/ PUB=$(node -p 'JSON.parse(require("fs").readFileSync("./review-governance.key")).publicKey') npx @veritasacta/verify@0.9.2 --replay-chain ./review-receipts/receipts.jsonl --key "$PUB"

Use the skill with natural requests

You do not need a special command to trigger the skill. Describe the project setup you want in plain language, for example that the agent may post PR reviews and you want approvals and signed receipts. The skill's description says it applies when you set up a project where an agent may post reviews, comments, merges or edit CI configuration, and want a cryptographically auditable approval trail with Cedar-enforced gates.

If you are running both this plugin and protect-mcp, both hooks must pass for a tool call to proceed, and a Cedar deny in either policy blocks it.

  • Try: "Set up review gating for this repo so the agent can't merge PRs without my approval."
  • Try: "Configure the approval trail for agent reviews and CI edits in this project."

Example: approving one PR review

The agent proposes a review, you check the blocked list, approve that specific action, and then let the agent retry. The allowed call produces a signed receipt. The denied attempt has no receipt, and the approval log is not signed, so present both with that in mind.

  • Run /list-pending to see the blocked gh pr review call
  • Run /approve-review with a reason, then let the agent retry
  • Remove ./.review-approved to close the window

What people use it for

  • Letting an agent post a review or comment on a pull request only after a maintainer has read it
  • Blocking agent merges to main, master, release or production branches without sign-off
  • Keeping a checkable record of which agent-run review actions were allowed for an audit
  • Preventing unreviewed edits to .github/workflows/ or .gitlab-ci.yml

Frequently asked questions

Is the review agent approval gate free?

The source lists the skill under the MIT licence and names no price. The setup also runs npx packages from npm, so check their own terms before relying on them.

What do I need to install it?

You need Claude Code with plugin support, Node.js with npx, the GitHub CLI (gh) or GitLab CLI for the actions you gate, and a Cedar policy file copied into your project.

How do I install review-agent-setup?

Run claude plugin install wshobson/agents/review-agent-governance, or download the ZIP from this page and unzip it into ~/.claude/skills/ or a project's .claude/skills/. In the Claude apps you can upload it under Settings → Capabilities → Skills.

Is the approval log tamper-proof?

No. The source says the approval log is unsigned, and the approval flag is a plain file the agent could create unless permissions prevent it. Only the receipts are signed.

Why does my agent still get blocked after I approved?

The approval window must be open when the agent runs the action. Check that ./.review-approved exists, and run /list-pending to see what was blocked. If REVIEW_APPROVAL_FLAG is set, approved windows have no effect.

What is a good alternative to this skill?

If the agent only edits local files and runs tests, the skill's docs say it is overkill and suggest protect-mcp for general tool-call policy enforcement. Teams that need fully automatic approvals will also need a different approach, since each approval here needs a human.

New agent skills, repos and AI tools — every week

The best new skills and open-source projects, the fastest-growing repos, and one free prompt. Five minutes to read. Unsubscribe anytime.

Our verdict

Use this skill if your Claude Code agent interacts with GitHub or GitLab repositories and you want a human to approve review, merge and CI actions, with signed receipts you can check offline. Skip it if the agent only edits local files and runs tests, or if your pipeline must approve actions without a person; the approval log is unsigned, so do not treat it as tamper-proof.

Download the skill