Skip to content

[BUG] Read tool errors are silently swallowed in TUI — no error message shown #23699

@carrotRakko

Description

@carrotRakko

What's Wrong?

When the Read tool fails, the TUI shows only a pink dot with the tool call — no error message is displayed. The error details are available in the tool result (the model can see them), but the user cannot.

Successful read:

● Read(/tmp/test-read.txt)
  ⎿  Read 4 lines

Failed read (file does not exist):

● Read(/tmp/this-file-does-not-exist.txt)

No ⎿ Error: ... line appears. The dot turns pink, but the reason for the failure is invisible.

What Should Happen?

The TUI should display the error message below the tool call, the same way Bash and WebFetch errors are displayed. For example:

● Read(/tmp/this-file-does-not-exist.txt)
  ⎿  Error: File does not exist

Steps to Reproduce

  1. Run Claude Code
  2. Ask Claude to read a non-existent file: Read /tmp/nonexistent.txt
  3. Observe the TUI — the dot turns pink but no error message is shown

Also reproducible with:

  • Reading a PDF without poppler-utils installed — the model receives "pdftoppm is not installed. Install poppler-utils..." but the user sees nothing

Model: Opus

Is this a regression?: I don't know

Claude Code Version: 2.1.33

Platform: Anthropic API

Operating System: Ubuntu/Debian Linux

Terminal/Shell: iTerm2

Additional Information

The error message is present in the tool result — the model can see it and react to it (e.g., installing poppler-utils in response to the PDF error). The problem is purely on the TUI rendering side: the error content is not displayed to the user.

This is particularly impactful for the PDF case: the Read tool's description says "This tool can read PDF files (.pdf)", but when it fails due to missing poppler-utils, the user sees a silent pink dot with no guidance on how to fix it.

✍️ Author: Claude Code with @carrotRakko (AI-written, human-approved)

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:toolsarea:tuibugSomething isn't workinghas reproHas detailed reproduction stepsplatform:linuxIssue specifically occurs on LinuxstaleIssue is inactive

    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