Skip to content

fix(claude-config): audit-pass states the report-only contract but does not declare disallowed-tools #2415

Description

@kyle-sexton

Small consistency gap, split out of PR #2408 rather than folded into it, because the file is
currently owned by another open PR.

What

Three claude-config skills state the same report-only contract in prose. As of claude-config
0.36.0 two of them enforce it mechanically and one does not:

Skill Contract text disallowed-tools
audit-prompting-postures "Never edits a component and never auto-applies a proposal." Edit, NotebookEdit (#2281 / CC-F4)
audit-instructions "There is no --fix… never by this skill." Edit, NotebookEdit (PR #2408)
audit-pass report-only, one human gate absent

The frontmatter key is documented and does what is needed here —
https://code.claude.com/docs/en/skills, frontmatter reference, fetched 2026-08-12:

disallowed-tools — Tools removed from Claude's available pool while this skill is active. […]
Accepts a space- or comma-separated string, or a YAML list. The restriction clears when you send
your next message.

That lifetime is the right one for this contract: the audit cannot edit, and the human who accepts a
proposal can, on their next message.

Why it was not fixed in #2408

plugins/claude-config/skills/audit-pass/SKILL.md is being edited by open PR #2403. Touching it
from a second PR would collide for a one-line frontmatter addition, so #2408 declared it on the two
skills it was already editing and filed this.

What closing it looks like

  1. Confirm audit-pass genuinely needs neither Edit nor NotebookEdit — grep its body the way
    feat(claude-config): give audit-permission-grants a denominator, and make audit-prompting-postures' contract agree with itself #2408 did for audit-instructions (which named neither anywhere).
  2. Keep Write. audit-pass persists run state and a report under ${CLAUDE_PLUGIN_DATA}; a
    blanket disallowed-tools: Write would break it. Only Edit / NotebookEdit are free.
  3. Add the key and one sentence of rationale, matching the wording the two siblings now carry.

Blocked on #2403 merging. Severity: LOW — an absent guarantee, not an observed violation; all three
skills' observed behavior already respects the contract.

Related

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions