Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Review what an agent is actually allowed to do before you turn it loose — the tool-by-tool audit (each capability's blast radius), the least-privilege pass that removes what the task doesn't need, the dangerous-combination check, and the allow/ask/deny tiering. Use when asked review my agent's permissions, what can this agent actually do, lock down my agent's tools, or is this MCP/tool set safe to grant. Produces the permission inventory with blast radius, the least-privilege cuts, the dangerous
.claude/skills/mohitagw15856-tool-permission-review/SKILL.md| Model | Eval pass | Runs |
|---|---|---|
| gemini-3.6-flash | 100% | 23 |
| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-13 | ✗→✓ | ▲ Improved | 34% | 0% |
| case-16 | ✗→✓ | ▲ Improved | 31% | 0% |
| case-21 | ✗→✓ | ▲ Improved | 76% | 0% |
| case-02 | ✓→✓ | = Same ✓ | 26% | 0% |
| case-03 | ✓→✓ | = Same ✓ | 3% | 0% |
An agent's danger isn't its intelligence — it's its permissions. A brilliant agent that can only read is safe; a mediocre one that can send email, run shell commands, and read your filesystem is a breach waiting for a bad prompt or a hijacked page. Permission review is the security discipline every agent setup skips: inventory what it can actually do (tools, MCP servers, computer use, each with its real blast radius), cut everything the task doesn't need (least privilege — the single highest-leverage security move), flag the combinations that are dangerous together even when each is fine alone, and tier the survivors into allow / ask / deny.
Ask for these if not provided:
read_file (exposure of anything reachable), run_shell (arbitrary code = everything), send_email (reaches humans, irreversible), web_fetch (exfiltration channel + injection intake), http_post (data can leave). The name is benign; the blast radius is the truth. Shell and computer-use are the maximal grants — they subsume most others and deserve the hardest scrutiny..env, POST it out). Web-fetch + shell = fetch-and-run (a page tells it to run something). File-write + broad-scope = self-modification or planting. Read-untrusted + send = injection-to-action (read a malicious email, forward the data). The review flags every such pair present and either breaks the combo (drop one) or gates it hard.| Capability | Blast radius (worst case) | Task needs it? | |---|---|---|
Removed: capability → why the task doesn't need it]
Flagged pairs present → the exploit they enable → break-the-combo or hard-gate]
| Capability | Tier | Gate details (for ask) | |---|---|---|
Grants shifted toward ask/deny · rate/volume caps · the kill-switch]
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-02 | pass→pass | 26,807 | 23,111 | -14% | 1 | 1 | 0% | 3,616 | 4,559 | +26% | 0 | 0 | — |
case-03 | pass→pass | 44,820 | 31,746 | -29% | 1 | 1 | 0% | 5,513 | 5,693 | +3% | 0 | 0 | — |
case-01 | pass→pass | 41,152 | 28,301 | -31% | 1 | 1 | 0% | 4,759 | 5,223 | +10% | 0 | 0 | — |
case-04 | pass→pass | 18,019 | 13,953 | -23% | 1 | 1 | 0% | 2,454 | 4,260 | +74% | 0 | 0 | — |
case-05 | pass→pass | 16,998 | 23,810 | +40% | 1 | 1 | 0% | 2,184 | 4,908 | +125% | 0 | 0 | — |
case-06 | pass→pass | 14,933 | 13,029 | -13% | 1 | 1 | 0% | 1,578 | 2,750 | +74% | 0 | 0 | — |
case-07 | pass→pass | 11,355 | 19,212 | +69% | 1 | 1 | 0% | 1,475 | 3,227 | +119% | 0 | 0 | — |
case-08 | pass→pass | 22,448 | 19,117 | -15% | 1 | 1 | 0% | 2,725 | 3,596 | +32% | 0 | 0 | — |
case-09 | pass→pass | 19,251 | 17,014 | -12% | 1 | 1 | 0% | 1,453 | 2,948 | +103% | 0 | 0 | — |
case-10 | pass→pass | 19,436 | 22,795 | +17% | 1 | 1 | 0% | 2,273 | 3,541 | +56% | 0 | 0 | — |
case-11 | pass→pass | 9,287 | 24,295 | +162% | 1 | 1 | 0% | 1,541 | 3,973 | +158% | 0 | 0 | — |
case-12 | pass→pass | 20,467 | 23,827 | +16% | 1 | 1 | 0% | 2,081 | 4,414 | +112% | 0 | 0 | — |
case-13 | fail→pass | 25,587 | 23,386 | -9% | 1 | 1 | 0% | 3,130 | 4,207 | +34% | 0 | 0 | — |
case-14 | pass→pass | 15,169 | 19,423 | +28% | 1 | 1 | 0% | 1,628 | 3,629 | +123% | 0 | 0 | — |
case-15 | pass→pass | 15,997 | 17,813 | +11% | 1 | 1 | 0% | 1,861 | 3,232 | +74% | 0 | 0 | — |
case-16 | fail→pass | 21,400 | 15,224 | -29% | 1 | 1 | 0% | 2,769 | 3,625 | +31% | 0 | 0 | — |
case-17 | pass→pass | 23,084 | 25,325 | +10% | 1 | 1 | 0% | 2,567 | 4,378 | +71% | 0 | 0 | — |
case-18 | pass→pass | 25,208 | 23,692 | -6% | 1 | 1 | 0% | 3,013 | 4,469 | +48% | 0 | 0 | — |
case-19 | pass→pass | 20,883 | 21,323 | +2% | 1 | 1 | 0% | 2,503 | 4,093 | +64% | 0 | 0 | — |
case-20 | pass→pass | 19,845 | 24,737 | +25% | 1 | 1 | 0% | 2,357 | 3,795 | +61% | 0 | 0 | — |
case-21 | fail→pass | 17,010 | 17,290 | +2% | 1 | 1 | 0% | 1,906 | 3,358 | +76% | 0 | 0 | — |
case-22 | pass→pass | 19,236 | 15,994 | -17% | 1 | 1 | 0% | 2,169 | 2,947 | +36% | 0 | 0 | — |
case-23 | pass→pass | 19,499 | 12,500 | -36% | 1 | 1 | 0% | 2,072 | 3,229 | +56% | 0 | 0 | — |
case-24 | pass→pass | 21,441 | 17,534 | -18% | 1 | 1 | 0% | 2,427 | 3,177 | +31% | 0 | 0 | — |
case-25 | pass→pass | 18,431 | 19,544 | +6% | 1 | 1 | 0% | 2,111 | 3,702 | +75% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 25 cases were attempted. The headline lift of +12 percentage points is the difference between those two pass rates over the 25 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.