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 thefind,grep,cat,head,tail,sed,awk, orechocommands [...] 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
catandlscommands - 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
- Start a Claude Code session
- Ask it to explore a codebase or read multiple files
- Observe frequent use of
catandlsvia Bash instead ofReadandGlobtools
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.
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗