[BUG] Full-width GFM table renders corrupted top border / first-row separators when the table reaches the terminal's last column (renderer-side; reproduces across terminals)
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?
When Claude Code renders a GitHub-flavored-markdown (GFM) table that is wide enough that its right border lands on the terminal's final column, the top of the table renders corrupted on the right-hand side: the top horizontal rule is broken/partial and the first body row loses its internal vertical column separators (│), so adjacent cells run together. Every subsequent row and the table's bottom border rule render perfectly — only the top-right corner is "torn."
This is renderer-side, not terminal-side. The identical corruption reproduces in two unrelated terminal emulators — AbsoluteTelnet 13.17 RC9 and PuTTY 0.81 — so both are faithfully displaying malformed output that Claude Code emits. A terminal-side last-column autowrap glitch would corrupt the top and bottom rules equally (same width); only the top rule + first row breaking is consistent with a renderer layout bug. It is also model-independent (the repro table was read verbatim from a file, so no model generated it), and width-triggered — the same table given more width so it no longer touches the last column renders completely clean.
Environment: macOS 15.7.4; SSH from a Windows client to the macOS host; terminals AbsoluteTelnet 13.17 RC9 (~141-col screen) and PuTTY 0.81 (32-bit x86 Windows). Deterministic and scrollback-stable (scrolling away and back does not change it). See attached screenshots (AbsoluteTelnet + PuTTY) — the corruption is byte-identical across both.
<img width="1580" height="972" alt="Image" src="https://github.com/user-attachments/assets/2471e79b-bc09-40e9-af2a-c12186327aa7" />
<img width="1576" height="768" alt="Image" src="https://github.com/user-attachments/assets/a1f18619-265d-4e76-b69d-d4f23cc9b436" />
What Should Happen?
The top border rule and all vertical column separators should render intact — identical to the (correct) bottom border and lower rows of the same table — regardless of whether the table's right border reaches the terminal's last column.
Error Messages/Logs
None. This is a purely visual rendering defect; no errors are emitted (the errors array is empty: `[]`).
Steps to Reproduce
- Use a terminal ~140 columns wide.
- Have Claude Code print a GFM table with enough columns / long-enough cell text that the rendered table's right border reaches the terminal's last column. A reliable example is a 4-column table (
Issue | Last reply | Maintainer | Title) with ~13 rows where the final column holds long strings (exact table below). - Look at the top of the rendered table.
Result: the top rule is broken on the right, and the first body row's │ separators are missing on the right side; the table looks "torn" at the top-right corner. The bottom rule and lower rows are fine. Reproduces identically in AbsoluteTelnet 13.17 RC9 (~141 cols) and PuTTY 0.81; renders clean when the same content is given more width so it no longer touches the margin.
Reproduction table:
~~~
| Issue | Last reply | Maintainer | Title |
|---|---|---|---|
| gildas-lormeau/SingleFile-MV3#34 | 2025-01 | gildas-lormeau | Filename replacement character doesn't work |
| Genymobile/scrcpy#1214 | 2023-03 | rom1v | Way to simulate swipe gesture? |
| AnaviTechnology/anavi-macro-pad-2 #1/#2/#3 | 2021-10 | leon-anavi | swag stickers / QMK support / BIOS trigger |
| cxw42/TabFern #223/#265/#266 | 2021-10 | cxw42 | delete-jumps-to-top / add tab count / incognito |
| lierdakil/pandoc-crossref#322 | 2021-08 | lierdakil | Broken README links |
| retext-project/retext#567 | 2021-08 | mitya57 | Prefs writes file to wrong folder |
| ACheeseSandwich/ecobee-remote#1 | 2021-06 | ACheeseSandwich | Where to buy hardware / versions |
| reproteq/DiffPatchWpf#1 | 2021-04 | reproteq | Silently abends on DIFF |
| QL-Win/QuickLook#722 | 2020-09 | xupefei | Toggle-button tooltip/default |
| nowsecure/fsmon#45 | 2020-07 | trufae | fsevapi backend buggy |
| reynhout/chrx#94 | 2020-05 | reynhout | Firmware-upgrade clarification |
| openrazer/openrazer#97 | 2017-09 | terricain | Razer Blade 2012 support |
| ...plus older | 2013-2019 | owners | Tabsets#16, fitbit-hooks#8, TigerOnVBox#5, BlinkyTape#3, c-mon#7, gntp-send#5, clipboard-manager-chromeos#2 |
~~~
Related issues (searched; distinct from this):
- #70014 (open) — "broken table borders and hides messages behind session prompt." That is the session-summary widget breaking with stray
────┘/────┤and hiding messages, not a content GFM table corrupting at the last column. - #64691 (closed, not planned) — "Wide markdown tables render with overlapping rows and misaligned borders on resize." Distinct: this needs no resize (deterministic at first render) and reproduces identically across two independent terminals, localizing it to the renderer.
Claude Model
Opus
Is this a regression?
I don't know
Last Working Version
_No response_
Claude Code Version
2.1.220
Platform
Anthropic API
Operating System
macOS
Terminal/Shell
Other
Additional Information
_No response_