update-allowed-tools

update-allowed-tools is a skill for Claude Code, Codex from vinta/hal-9000. It costs 38 tokens per session (939 once invoked), scanned A, original, MIT.

A checker for the permission list in a coding-agent skill that uses shell commands, file changes, or external tools. It compares the tools the skill needs with its allowed-tools settings.

In plain words
What is it for?
Use it when creating or editing a skill to inspect its full instructions and related files, then update or report its allowed-tools entries.
Why use it?
It finds missing permissions and entries that grant no useful access, which can otherwise cause prompts or misleading configuration.

Skill for Claude CodeCodex

Part of the skills plugin — 10 skills shipped together

Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

agentmods
npx agentmods add skills/vinta/hal-9000/update-allowed-tools
Any agent
npx skills add vinta/hal-9000 --skill update-allowed-tools
Clone the repo
git clone --depth 1 https://github.com/vinta/hal-9000

Made for: Claude Code, Codex.

Or install skills, the plugin that ships this one along with the rest of its 10 skills.

Wrote this? Show the measurements

A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.

agentmods badge for update-allowed-tools

README.md
[![agentmods](https://agentmods.dev/badge/skills/vinta/hal-9000/update-allowed-tools.svg)](https://agentmods.dev/skills/vinta/hal-9000/update-allowed-tools)
Your own site
<a href="https://agentmods.dev/skills/vinta/hal-9000/update-allowed-tools"><img src="https://agentmods.dev/badge/skills/vinta/hal-9000/update-allowed-tools.svg" alt="Measured on agentmods" height="20"></a>
Per session 38 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 939 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 1 finding. Scan, not verified.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5 $0.00038 $0.00939
Opus 5 $0.00019 $0.00469
Sonnet 5 $0.00008 $0.00188
Haiku 4.5 $0.00004 $0.00094

Measured 4d ago against content hash dc10d9e36bc7, method: parsed. Prices are Anthropic first-party input rates as of 2026-08-30, from the pricing page.

Security

Grade A, and why

update-allowed-tools scanned grade A with 1 finding against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 4d ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Makes network callslowCapability

Not a fault in itself. Listed so you know the mod talks to something, and to what.

- Bash command patterns: e.g., `git diff`, `git commit`, `make`, `npm`, `docker`, `python`, `curl`, etc.
skills/update-allowed-tools/SKILL.md · 56 lines

How it starts

The opening of the file, as written. The whole thing — 56 lines — stays where its author put it; the contents beside it link to each section on GitHub.

Invoking this skill IS the request. If the user message looks empty, that is normal and expected, the task is fully specified here. Never ask what to do.

Overview

Analyzes a skill's full content, SKILL.md and any sibling files in the same directory, to find tools it references or requires, then compares against the skill's allowed-tools frontmatter to find missing entries and entries that grant nothing.

allowed-tools is permission mechanics only: an entry earns its place by removing a permission prompt the skill would otherwise hit. It is not a manifest of the tools the skill uses.

Usage

/update-allowed-tools <skill name>
/update-allowed-tools @path/to/SKILL.md

Instructions

  1. Parse argument: The argument is either a file path to a SKILL.md file, or a skill name/description. If no file path is provided, search for the skill using Glob in the current working directory (e.g., **/skills/**/<name>/SKILL.md). If there is no argument at all, run git status and target the most recently modified skill file in the working tree.

  2. Read the skill file and separate the YAML frontmatter from the body content. Also read any other files in the same directory (sibling files referenced by or bundled with the skill).

  3. Extract declared allowed-tools: Parse all entries under allowed-tools: in the frontmatter.

  4. Scan all skill content (SKILL.md body + sibling files) for tool usage. Look for:

    • Explicit tool names that prompt by default: e.g., Write, Edit, Bash, WebFetch, WebSearch, and mcp__* tools.
    • Bash command patterns: e.g., git diff, git commit, make, npm, docker, python, curl, etc.
    • For Bash commands found, the required allowed-tool format is Bash(<command>:*) (e.g., git stash push needs Bash(git stash:*))
    • For file tools with path patterns (Read, Write, Edit), note the paths referenced (e.g., /tmp/ needs Read(//tmp/**))
  5. Compare: For each tool detected in the body, check if it's covered by an entry in allowed-tools. Rules:

    • Glob, Grep, and Read are permission-free within the project directory. Only add read rules for files outside the project (e.g., Read(//tmp/**)).
    • Write and Edit prompt for approval by default, inside the project too. allowed-tools grants permission rather than restricting tools, so add entries scoped to the paths the skill is meant to modify (e.g., Edit(CLAUDE.md), Write(~/.config/**)).
    • Bash commands always need explicit Bash(<command>:*) entries.
    • A Bash pattern covers subcommands (e.g., Bash(git stash:*) covers git stash push).
    • Exact match counts as covered (e.g., WebSearch matches WebSearch).
    • Skill(...), AskUserQuestion, and Agent entries grant nothing: skill invocation, asking the user, and spawning subagents never prompt by default, and where a user has gated them with ask/deny rules, a grant cannot override those rules. Never add these; remove any already present.

Read the full file on GitHub · 56 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 4d ago First seen · 56 lines · 38 tokens per session scan A dc10d9e36bc7

Subscribe to this mod's changes

update-allowed-tools is a skill published in the GitHub repository vinta/hal-9000 (125 stars, last pushed 6d ago), licensed MIT. It adds 38 tokens to every session and 939 once invoked, about $0.0002 per session on Opus 5. A static security scan graded it A with 1 finding (makes network calls). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.

Related

Other skills, from other repositories

configure-nightwatch

Configures Laravel Nightwatch data collection, sampling rates, filtering rules, and redaction policies. Use when setting up Nightwatch, managing data volume, protecting sensitive data (PII), or optimizing event collection for production workloads.

coollabsio/coolify · 49 tokens

laravel-actions

Build, refactor, and troubleshoot Laravel Actions using lorisleiva/laravel-actions. Use when implementing reusable action classes (object/controller/job/listener/command), converting service classes/controllers/jobs into actions, orchestrating workflows via faked actions, or debugging action entrypoints and wiring.

coollabsio/coolify · 62 tokens

debugging-output-and-previewing-html-using-ray

Use when user says "send to Ray," "show in Ray," "debug in Ray," "log to Ray," "display in Ray," or wants to visualize data, debug output, or show diagrams in the Ray desktop application.

coollabsio/coolify · 58 tokens

fortify-development

ACTIVATE when the user works on authentication in Laravel. This includes login, registration, password reset, email verification, two-factor authentication (2FA/TOTP/QR codes/recovery codes), passkeys, profile updates, password confirmation, or any auth-related routes and controllers. Activate when the user mentions…

coollabsio/coolify · 199 tokens

pest-testing

Use this skill for Pest PHP testing in Laravel projects only. Trigger whenever any test is being written, edited, fixed, or refactored — including fixing tests that broke after a code change, adding assertions, converting PHPUnit to Pest, adding datasets, and TDD workflows. Always activate when the user asks how to…

coollabsio/coolify · 171 tokens

configuring-horizon

Use this skill whenever the user mentions Horizon by name in a Laravel context. Covers the full Horizon lifecycle: installing Horizon (horizon:install, Sail setup), configuring config/horizon.php (supervisor blocks, queue assignments, balancing strategies, minProcesses/maxProcesses), fixing the dashboard…

coollabsio/coolify · 137 tokens