Claude Code now splits text into pieces and measures how many character cells each one takes on screen. A piece is replaced with a placeholder if it is too wide for the space it has, or if it uses a character code that has no assigned character. The placeholder is the first of these that fits:
"[unreadable text]"
"[unreadable]"
"[?]"
Emoji are counted as two cells wide.
Why
Text that cannot be displayed properly is marked clearly instead of overflowing or scrambling the lines around it, so a placeholder tells you something was there that the terminal could not show.
How sure we are
One source agreesOne thing we can check says the same as this entry.
Anthropic's release notes agreeImproved screen-reader output in /mcp: a disabled server is read as "off" instead of "pending"