Claude Code stopped using its own tools
A week ago I installed the TypeScript LSP plugin for Claude Code. The pitch sold me. The agent works the way I do in an editor, navigating with go-to-definition and find-references instead of grepping around, and catching type errors as it writes instead of at the end of a task. I watched it work in that session and forgot about it. A week later I went back to check what it had bought me. Nine…
Claude Code stopped using its own tools after I installed the TypeScript LSP plugin for it. The plugin provides features like go-to-definition and find-references, making the agent work seamlessly within the editor. However, the plugin stopped using Claude's built-in tools after a week, with only nine calls out of twenty-seven sessions in the last week. Over the last two weeks, it used Bash commands 84% of the time, while the built-in file tools fell to 7%.
The permissions rules explain a large portion of the issue. Claude's Bash commands run without a permission prompt in every mode, including ls, cat, head, grep, find, and read-only git commands. These commands are not configurable. While 22% of 5,837 Bash calls used only commands from this list, none prompted for permission. Two rules in the deny list include Read(/.env) and Bash(rm -rf:*). A command from the user's transcripts shows Claude using grep on /env, which is denied, but it's not a Read command.
The changelog mentions that Glob and Grep are removed on native macOS and Linux builds, replaced by embedded bfs and ugrep through the Bash tool. However, on the user's machine, bfs and ugrep were not found, and these tools still listed in the reference. This build regression may be causing the issue. A documentation issue (#64136) ties the missing tools to Bash storms and fabricated file paths, while another issue (#52121) describes similar problems on macOS and Linux systems with permission policies.
The user tried several solutions, including an undocumented environment variable and a PreToolUse hook to deny Bash for tasks better handled by built-in tools. Blocking grep did not prevent Claude from using git grep and git ls-files, requiring manual intervention. With the hook closed, Claude used the correct tools, but the user believes it should be easier to manage these settings, given the frequent updates to Claude Code.
Written by urgent.news from Dev.to's reporting — not their text. Machine-written — may contain errors; check the original before relying on it.