Skip to content

Permission rule Bash(:*) is invalid — prefix cannot be empty before :* #1105

@Josulo72

Description

@Josulo72

Summary

The permissions.allow array in the installed settings.local.json contains:

"Bash(:*)"

Claude Code rejects this with:

permissions
  └ allow: Invalid permission rule "Bash(:*)" was skipped:
    Prefix cannot be empty before :*. Specify a command prefix before :*

The rule is silently dropped. Combined with the PreCommit and auto_format matcher issues, the entire settings.local.json fails to load — Claude Code asks the user whether to continue without the file. Most users (correctly) accept the "continue without these settings" option, which disables every hook and permission rule in the file.

Version

  • autonomous-dev: 3.51.0
  • Claude Code: 2.1.144

Reproduction

  1. Fresh install.
  2. Open Claude Code → startup warning includes this rule alongside the other two issues filed.

Expected behaviour

If the intent is "auto-approve any Bash command", the rule should use a syntax Claude Code recognises. Options to evaluate:

  • "Bash(*)"
  • Omit the entry entirely and rely on the more specific allow rules already present (Bash(git init *), Bash(python3 *), etc.).

Suggested fix

I would lean toward removing the entry: the existing explicit allows already cover most known-safe operations, and unknown Bash commands then correctly fall through to a per-prompt approval (which matches the "layered security" narrative in the README).

If the intent really is "blanket allow", validate that "Bash(*)" (or whatever the canonical wildcard syntax is in current Claude Code) is accepted, then use that.

Impact

Today the rule is dropped silently, leading to confusion about why expected auto-approval doesn't happen. Combined with the two related issues above, the whole file fails validation and users lose functionality they paid for in install time.## Summary

The permissions.allow array in the installed settings.local.json contains:

"Bash(:*)"

Claude Code rejects this with:

permissions
  └ allow: Invalid permission rule "Bash(:*)" was skipped:
    Prefix cannot be empty before :*. Specify a command prefix before :*

The rule is silently dropped. Combined with the PreCommit and auto_format matcher issues, the entire settings.local.json fails to load — Claude Code asks the user whether to continue without the file. Most users (correctly) accept the "continue without these settings" option, which disables every hook and permission rule in the file.

Version

  • autonomous-dev: 3.51.0
  • Claude Code: 2.1.144

Reproduction

  1. Fresh install.
  2. Open Claude Code → startup warning includes this rule alongside the other two issues filed.

Expected behaviour

If the intent is "auto-approve any Bash command", the rule should use a syntax Claude Code recognises. Options to evaluate:

  • "Bash(*)"
  • Omit the entry entirely and rely on the more specific allow rules already present (Bash(git init *), Bash(python3 *), etc.).

Suggested fix

I would lean toward removing the entry: the existing explicit allows already cover most known-safe operations, and unknown Bash commands then correctly fall through to a per-prompt approval (which matches the "layered security" narrative in the README).

If the intent really is "blanket allow", validate that "Bash(*)" (or whatever the canonical wildcard syntax is in current Claude Code) is accepted, then use that.

Impact

Today the rule is dropped silently, leading to confusion about why expected auto-approval doesn't happen. Combined with the two related issues above, the whole file fails validation and users lose functionality they paid for in install time.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions