Skip to content

Docs: settings.json permissions don't explain that piped commands need separate entries #31498

@atsaloli

Description

@atsaloli

Problem

The settings documentation explains the Tool(specifier) format for permission rules, but doesn't mention that piped shell commands require a separate allowedTools entry for each command in the pipeline.

Example

To allow Claude Code to send email via:

printf "To: ...\nSubject: ...\n\nBody\n" | msmtp -t

You need two entries in settings.json:

"allowedTools": [
  "Bash(printf:*)",
  "Bash(msmtp:*)"
]

This is non-obvious. I asked Claude Code to add permissions and it added Bash(printf:* | msmtp:*) and it still prompted for approval.

Suggested fix

Add a note or example in the permissions docs clarifying that each command in a pipeline must be individually allowed.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions