Summary
The permissions.allow array in the installed settings.local.json contains:
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
- Fresh install.
- 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:
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
- Fresh install.
- 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.allowarray in the installedsettings.local.jsoncontains:"Bash(:*)"Claude Code rejects this with:
The rule is silently dropped. Combined with the
PreCommitandauto_format matcherissues, the entiresettings.local.jsonfails 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
Reproduction
Expected behaviour
If the intent is "auto-approve any Bash command", the rule should use a syntax Claude Code recognises. Options to evaluate:
"Bash(*)"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.allowarray in the installedsettings.local.jsoncontains:"Bash(:*)"Claude Code rejects this with:
The rule is silently dropped. Combined with the
PreCommitandauto_format matcherissues, the entiresettings.local.jsonfails 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
Reproduction
Expected behaviour
If the intent is "auto-approve any Bash command", the rule should use a syntax Claude Code recognises. Options to evaluate:
"Bash(*)"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.