Custom statusline compressed to 1 char/line when notification banners are active

Resolved 💬 10 comments Opened Feb 21, 2026 by AmaralVini Closed Mar 30, 2026

Bug description

When a UI notification banner is active (e.g., npm-deprecation-warning, programdata-deprecation-warning), custom statusline output is compressed vertically — each character renders on its own line, making the statusline completely unreadable.

This happens because the footer layout uses flex with different shrink behaviors:

  • Statusline container (H6): flexShrink: 1 — shrinks to accommodate notifications
  • Notifications container (Y6): flexShrink: 0 — never shrinks

When a multi-line notification banner appears, the statusline area shrinks to near-zero height, causing the text to wrap character-by-character.

Steps to reproduce

  1. Install Claude Code via npm (triggers npm-deprecation-warning banner on startup)
  2. Configure a custom statusline in ~/.claude/settings.json:

``json
{
"statusLine": {
"type": "command",
"command": "bash ~/.claude/statusline.sh"
}
}
``

  1. Start a new Claude Code session
  2. Observe the statusline is compressed/unreadable while the notification banner is visible (~15s)
  3. After the banner auto-dismisses, the statusline renders correctly

Expected behavior

The statusline should remain readable when notification banners are active. Either:

  • Both containers should share available space proportionally
  • The statusline should have flexShrink: 0 (or a minimum height)
  • Users should have a way to disable/suppress specific startup banners

Actual behavior

The statusline text wraps to 1 character per line, becoming completely unreadable. This persists for the duration of the notification banner (typically 15 seconds for startup banners).

!Image

Environment

  • Claude Code version: 2.1.49
  • Platform: Windows 11 (Git Bash)
  • Terminal: Windows Terminal
  • Install method: npm

Additional context

  • The addNotification system that displays these banners does NOT go through the Notification hook system, so there's no way to detect or suppress them from the statusline script
  • Identified ~20 notification types that can trigger this, most impactful being startup banners with 15s timeout
  • The statusLine.padding setting only adds horizontal spacing and does not help
  • No existing setting to disable specific notification banners
  • Related issues: #21867, #22222, #23623 (all involve statusline layout compression in different scenarios)

View original on GitHub ↗

This issue has 10 comments on GitHub. Read the full discussion on GitHub ↗