[BUG] Claude keeps crashing when I ask it to stop and or clarify what it is doing
Preflight Checklist
- [x] I have searched existing issues and this hasn't been reported yet
- [x] This is a single bug report (please file separate reports for different bugs)
- [x] I am using the latest version of Claude Code
What's Wrong?
Claude keeps crashing when I ask it to stop in the middle of a task.
What Should Happen?
Claude should be able to stop and adjust to me clarifying what I want, this has only started with I assume this latest version update
Error Messages/Logs
Internal error: API Error: 400 {"type":"error","error":{"type":"invalid_request_error","message":"messages.7.content.3: `tool_use` ids must be unique"},"request_id":"req_011CVnyAb6xg2PwTEZcTJVGA"}
Steps to Reproduce
User
Why do I keep getting this response?
Internal error: API Error: 400 {"type":"error","error":{"type":"invalid_request_error","message":"messages.7.content.4: tool_use ids must be unique"},"request_id":"req_011CVnxfPVtvxDuz6hfsfCFt"}
Assistant
This error indicates that you're sending duplicate tool_use IDs in a request to the Anthropic API. Each tool use within a message must have a unique ID.
Common causes:
- Reusing tool_use blocks - You might be accidentally duplicating a tool call block when constructing the message
- Copy-paste errors - Copying an entire tool_use block and forgetting to change/remove the ID
- Loop/iteration issues - Code that generates tool calls in a loop might be reusing the same ID
- Message construction logic - When building the messages array, you might be including the same tool_use content multiple times
How to debug:
Let me help you investigate. Can you share:
- The code that's making the API call?
- Or the file/function where you're constructing the messages array?
I can search your codebase for API calls if you'd like:
**Tool Call: grep "messages.content.tool_use" Status: Completed
No files found
**Tool Call: grep "anthropic.messages.create" Status: Completed
No files found
*Tool Call: grep "tool_use.id" Status: Completed
No files found
Assistant
The searches didn't find obvious API integration code. Could you:
- Point me to the file where this error occurs?
- Or paste the code snippet that's making the API call?
Once I see the code, I can identify exactly where the duplicate tool_use IDs are being created.
User
You are making the api call, it's a reponse I keep getting when I talk to you
Assistant
Ah! I understand now - this is an error I'm generating when making API calls on your behalf. This is a bug in Claude Code itself.
This error means that when I'm trying to make parallel tool calls (calling multiple tools in a single response), I'm somehow generating duplicate IDs for the tool_use blocks.
Possible workarounds:
- Avoid triggering parallel tool calls - Try to phrase requests in a way that only requires one tool at a time
- Report the bug - This is definitely a bug in Claude Code that should be reported at https://github.com/anthropics/claude-code/issues
What might be triggering it:
Looking at my previous response, I made 3 parallel Grep calls in a single message. This is likely when the duplicate ID issue occurred.
To help debug this:
- Does this happen consistently when you ask certain types of questions?
- Did it just start happening in this conversation, or have you seen it before?
- Does it occur when I try to call multiple tools at once?
For now, you could try:
- Asking me to do one thing at a time
- Restarting the conversation with
/clear
This is definitely a bug in Claude Code's tool invocation system that the developers should investigate. Would you like me to help you gather more details to include in a bug report?
User
Ok, so we talked about you clarifying what I wanted first and you didn't do taht. You also tried to make a ts file in my ruby app, so of course I asked you to stop and clarify
Assistant
You're absolutely right - I apologize for that. I should have:
- Asked clarifying questions first before making assumptions about what you wanted
- Understood your tech stack (Ruby app) instead of assuming TypeScript
This is exactly the kind of situation where I should have used the AskUserQuestion approach or taken time to explore your codebase first to understand the context.
Let me start over properly:
What are you trying to accomplish?
And to better understand your project, let me first check what kind of application this is:
Tool Call: Read /Users/chris/projects/marmalade/Gemfile Status: Completed
source "https://rubygems.org"
git_source(:github) { |repo| "https://github.com/#{repo}.git" }
def dev_test_and_pr_review_apps
environments = [:development, :test]
environments << :production if ENV.fetch("PR_BRANCH_DEPLOY", false) == "true"
environments
end
ruby File.read(".ruby-version").strip
# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
gem "rails", "~> 7.2.2"
# Use postgresql as the database for Active Record
gem "pg", ">= 0.18", "< 2.0"
# Use Puma as the app server
gem "puma", "~> 5.6"
# Use SCSS for stylesheets
gem "dartsass-rails"
gem "draper"
gem "sprockets-rails"
# Use Vite instead of webpacker
gem "vite_rails"
# Authentication & Authorization
gem "devise"
gem "devise_saml_authenticatable"
gem "omniauth"
gem "omniauth-rails_csrf_protection"
gem "omniauth-xero-oauth2"
gem "pundit"
# Packwerk and associated gems
gem "code_ownership"
gem "packs-rails"
gem "packwerk"
gem "packwerk-extensions"
gem "visualize_packs"
gem "omniai"
gem "omniai-anthropic"
gem "postmark-rails"
gem "redcarpet"
gem "rollbar"
gem "money-rails", "~> 1.15"
gem "rails_param", "0.11.0"
# run `bundle update ofx` if you update the gem
gem "ofx", github: "withmarmalade/ofx" # our own fork, original abandonded
gem "cybersource_rest_client"
gem "jwt"
gem "stripe"
gem "faraday", "~> 2.13"
gem "faraday-mashify"
gem "faraday-retry", "~> 2.2"
gem "with_advisory_lock", "4.6.0"
gem "slack-notifier"
gem "slack-ruby-client", "~> 2.4"
gem "double_entry", github: "envato/double_entry"
gem "activejob-uniqueness", require: "active_job/uniqueness/sidekiq_patch"
gem "sidekiq"
gem "sidekiq-scheduler"
gem "cronitor"
gem "ledermann-rails-settings"
gem "lex", "~> 0.1.0"
# Turbolinks makes navigating your web application faster. Read more: https://github.com/turbolinks/turbolinks
gem "turbolinks", "~> 5"
# Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder
gem "jbuilder", "~> 2.7"
# Use Redis adapter to run Action Cable in production
gem "redis", "~> 4.0"
# Use Active Model has_secure_password
# gem 'bcrypt', '~> 3.1.7'
gem "prawn"
gem "prawn-svg"
gem "prawn-table"
# Needed for prawn to run
gem "matrix"
# Use Active Storage variant
gem "activeadmin"
gem "activeadmin-searchable_select"
gem "paper_trail"
gem "paper_trail-globalid"
gem "pdf-inspector", require: "pdf/inspector"
# Reduces boot times through caching; required in config/boot.rb
gem "bootsnap", ">= 1.4.2", require: false
gem "lograge"
gem "logstash-event"
gem "abn"
gem "phonelib"
gem "ruby-enum"
gem "aws-sdk-s3", require: false
gem "aws-sdk-sns", require: false
gem "pg_search"
gem "rainbow"
gem "kaminari"
# Forked to add extra desired functionality
gem "fx", github: "withmarmalade/fx", branch: "allow-specifying-folder-path-for-triggers-and-functions"
gem "acts-as-taggable-on"
gem "flipper", "~> 1.0"
gem "flipper-ui"
gem "wisper", "~> 3.0"
gem "wisper-activejob", github: "withmarmalade/wisper-activejob"
gem "statesman"
gem "json_schemer"
gem "business_time"
gem "datadog_api_client"
gem "aba"
gem "savon"
gem "ransack"
gem "activerecord-cte"
gem "after_commit_everywhere", "1.4.0"
gem "rubyzip"
group(*dev_test_and_pr_review_apps) do
gem "factory_bot_rails"
gem "faker"
end
group :development, :test do
# Call 'byebug' anywhere in the code to stop execution and get a debugger console
gem "brakeman"
gem "byebug", platforms: [:mri, :mingw, :x64_mingw]
gem "capybara-screenshot"
gem "dotenv-rails"
gem "faraday-detailed_logger" # dont use in production
gem "mustache", "~> 1.0"
gem "pry"
gem "rails-erd"
gem "rspec-rails", ">= 7.1"
gem "rspec-retry"
gem "rspec-snapshot"
gem "rubocop", "~> 1.81", require: false
gem "rubocop-migration", require: false
gem "rubocop-packs", require: false
gem "rubocop-performance", require: false
gem "rubocop-rails", require: false
gem "rubocop-rspec", require: false
gem "rubocop-sorbet", require: false # included in rubocop-packs, but included explicitly as we're disabling it
gem "semaphore_test_boosters"
gem "timecop"
gem "webmock"
gem "wisper-rspec", require: false
end
group :development, :production do
gem "flipper-redis"
gem "newrelic_rpm"
end
group :development do
gem "activerecord-analyze"
# Access an interactive console on exception pages or by calling 'console' anywhere in the code.
gem "listen"
gem "ngrok-wrapper"
gem "web-console"
end
group :test do
# Adds support for Capybara system testing and selenium driver
gem "capybara"
gem "capybara-select-2"
gem "insecure_random"
gem "selenium-webdriver"
# Easy installation and use of web drivers to run system tests with browsers
gem "rspec-activemodel-mocks"
gem "shoulda-matchers"
gem "simplecov", require: false
gem "simplecov-lcov", require: false
gem "stripe-ruby-mock", "~> 3.1.0.rc3", require: "stripe_mock"
gem "super_diff"
end
gem "authsignal-ruby", github: "warp/authsignal-ruby", ref: "d9ed665"
gem "connection_pool", "~> 2.3"
group :production do
gem "cloudfront-rails"
end
gem "browser"
gem "restforce", "~> 8.0.0"
gem "image_processing", "~> 1.0"
gem "active_storage_validations", "~> 1.3"
gem "countries"
gem "net-sftp"
# Required by net-ssh (via net-sftp) for ed25519 key format support which is used for GlobalPayments SFTP auth
# https://github.com/net-ssh/net-ssh/issues/565
gem "bcrypt_pbkdf", ">= 1.0", "< 2.0"
gem "ed25519", ">= 1.2", "< 2.0"
gem "automatic_namespaces", "~> 0.5.2"
gem "gpgme", "~> 2.0"
Tool Call: ls -la /Users/chris/projects/marmalade
Status: Failed
User refused permission to run tool
User
It is a ruby on rails application and you have been providing code for it, come on
ERROR IS THEN THROWN
Claude Model
Sonnet (default)
Is this a regression?
I don't know
Last Working Version
No response
Claude Code Version
claude-sonnet-4-5-2025092
Platform
Anthropic API
Operating System
macOS
Terminal/Shell
Other
Additional Information
I'm running claude from the agent window in Zed