Sticky prompt header does not appear when scrolled up (fullscreen renderer, 2.1.252, iTerm2, no tmux)
What happens
The sticky prompt header (the bar that pins the last user prompt at the top of the transcript when it scrolls off screen, clickable to jump back to it) never appears, even with the fullscreen renderer active and after scrolling the prompt well above the viewport top.
Expected
Scrolling up in a conversation taller than the terminal should pin the last off-screen user prompt as a header at the top of the scroll area.
Environment
- Claude Code 2.1.252 (native install), also seen on 2.1.251
- macOS 26 (Darwin 25.5.0), Apple Silicon
- iTerm2,
TERM=xterm-256color, no tmux ($TMUXempty), not tmux-CC /tuireportsCurrent renderer: fullscreenCLAUDE_CODE_NO_FLICKER=1set in~/.claude/settings.json- No
crashAutoOff/fullscreenAutoDisabledstate persisted anywhere under~/.claudeor~/.claude.json
Repro
- Open a conversation in iTerm2, fullscreen renderer.
- Let the transcript grow well past one screen.
- Scroll up with the wheel until the last user prompt is fully above the top of the viewport.
- No sticky header appears.
Also checked: not in the transcript screen (Ctrl+O), not viewing an agent/teammate transcript.
What I found in the bundle
Reading the shipped binary, the tracker is mounted on:
trackStickyPrompt: !X && Nt()
with X = (screen === "transcript") and Nt() the fullscreen-renderer check. The consumer bails on:
if (firstVisible > 0 && !scrollHandle.isSticky()) { ...compute header... }
and the header itself is suppressed by hideSticky: isTeammate.
All three of those gates look open in my setup: normal screen, fullscreen renderer on, main conversation, scroll not pinned to bottom. So either one of them is evaluating differently than expected here, or the header is being computed and not rendered.
The expression trackStickyPrompt: !X && Nt() is byte-identical across 2.1.250, 2.1.251 and 2.1.252, so this is not a regression introduced in those three — I do not have older binaries to bisect further.
Notes
Happy to run any diagnostic or debug-flagged build that would narrow down which gate is closing.
This issue has 5 comments on GitHub. Read the full discussion on GitHub ↗