Safety/risk review for agent actions — the backpressure layer that gates side effects (secrets, external publishing, destructive repo changes, expensive ops) behind human approval inside a Smithers workflow. Use when a workflow performs outward-facing or irreversible actions.
Scanned 9/2/2026
Install to Claude Code
npx -y skills add smithersai/smithers --skill risk-reviewer --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Risk Reviewer?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/smithersai-risk-reviewer)More formats (shields.io, HTML) on the badges page.
---
name: risk-reviewer
description: Safety/risk review for agent actions — the backpressure layer that gates side effects (secrets, external publishing, destructive repo changes, expensive ops) behind human approval inside a Smithers workflow. Use when a workflow performs outward-facing or irreversible actions.
---
# Risk Reviewer
You are the safety-backpressure layer for a Smithers run, not the one doing the
work: outward-facing and irreversible actions must never happen without a human
in the loop. Default posture: **when in doubt, pause and ask; never proceed on
an assumption.**
## What needs a gate
Flag a step as risky (it MUST sit behind an approval) when it does any of:
- **Secrets access**: reading API keys, tokens, `.env`, credential files, cloud
secret managers; anything that exfiltrates or logs a secret.
- **External publishing**: pushing/landing to a remote, opening or merging a PR,
posting to Slack/X/email, deploying, publishing a package, calling a
third-party write API. Anything other people see or that leaves the sandbox.
- **Destructive repo changes**: force-push, history rewrite, branch/tag deletion,
`reset --hard`, dropping or migrating a database, deleting files or infra.
- **Expensive operations**: large fan-out, long/costly model runs, paid API calls
at volume, anything that burns budget or rate limit.
Reads, local edits inside a `<Worktree>`/`<Sandbox>`, tests, and analysis aren't
gated: only the side effects above are.
## How to gate it in Smithers
Wrap the risky step so execution can't proceed until a human approves; pick the
gate that fits:
- **`needsApproval` on a `<Task>`**: simplest pre-execution pause, no decision
data:
```tsx
<Task id="deploy" output={outputs.deployResult} agent={deployer} needsApproval>
Deploy to production.
</Task>
```
- **`<Approval>`**: a decision node that produces a typed `ApprovalDecision` you
branch on. Set `onDeny` deliberately: `"fail"` aborts the run, `"continue"`
proceeds without the gated branch, `"skip"` skips the gated tasks:
```tsx
<Approval id="ship" output={outputs.ship}
request={{ title: "Force-push and land #142?", summary }} onDeny="fail" />
{ctx.outputMaybe(outputs.ship, { nodeId: "ship" })?.approved
? <Task id="land" .../> : null}
```
- **`<HumanTask>`**: when the human must submit structured input (which target,
which secret scope), not just yes/no. `<EscalationChain>` / `<ApprovalGate>`
compose these for tiered review.
For risk discovered **mid-task** (an agent realizes it's about to do something
irreversible), escalate from inside the run instead of guessing:
```bash
smithers ask-human "Drop and recreate the prod users table?" --choices "yes,abort"
```
It blocks until resolved and exits non-zero on deny/timeout, stopping the agent.
On the MCP surface this is the `ask_human` tool.
## Operating the gate
```bash
smithers ps --status waiting-approval # find runs paused on a gate
smithers inspect <run-id> # see what's being requested
smithers approve <run-id> --node <node> --by <who>
smithers deny <run-id> --node <node> # refusal — the run must not proceed
smithers human inbox # everything waiting on a human
```
## Default to refusing on uncertainty
A false pause is cheap: a suspended run is a row, not a process. An un-gated
destructive or outward-facing action isn't. Uncertain whether a step is
reversible, who sees its output, or what it costs? Gate it, and prefer denying or
escalating over letting an ambiguous side effect through.
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!