Claude Code frequently uses Bash cat/ls instead of dedicated Read/Glob tools

Resolved 💬 3 comments Opened Jan 29, 2026 by ilanoh Closed Feb 2, 2026

Description

Claude Code frequently falls back to using Bash commands (cat, ls, ls -la) instead of the dedicated tools (Read, Glob) that it is explicitly instructed to prefer in its own system prompt.

The system prompt clearly states:

Avoid using Bash with the find, grep, cat, head, tail, sed, awk, or echo commands [...] Instead, always prefer using the dedicated tools: - File search: Use Glob (NOT find or ls) - Read files: Use Read (NOT cat/head/tail)

Despite this, during normal usage sessions the model repeatedly uses cat and ls via Bash, triggering permission prompts each time.

Impact

  • Users get prompted for permission hundreds of times per session for cat and ls commands
  • The dedicated tools (Read, Glob) don't require permission prompts, so this creates unnecessary friction
  • The model is not following its own documented best practices

Steps to Reproduce

  1. Start a Claude Code session
  2. Ask it to explore a codebase or read multiple files
  3. Observe frequent use of cat and ls via Bash instead of Read and Glob tools

Expected Behavior

Claude Code should consistently use Read instead of cat/head/tail and Glob instead of ls/find, as its system instructions specify.

Workaround

Users can add Bash(cat:*) and Bash(ls:*) to the allow list in ~/.claude/settings.json to suppress the permission prompts.

View original on GitHub ↗

This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗