OSC title not emitting idle marker after turn ends (breaks herdr status detection)

Resolved 💬 1 comment Opened Jun 15, 2026 by hgill-godaddy Closed Jun 15, 2026

Summary

After a Claude Code update on 2026-06-15, the OSC terminal title no longer emits the (U+2733) idle marker when a turn completes. This causes herdr (terminal workspace manager) to show agents as permanently "working" after their first tool call.

Reproduction

  1. Run Claude Code inside herdr (HERDR_ENV=1)
  2. Submit a prompt that triggers tool use
  3. Wait for the turn to complete (agent returns to prompt)
  4. Observe: herdr agent explain <target> still shows state: working

Expected behavior

When the turn ends and Claude Code returns to the idle prompt (), the OSC title should switch from the braille spinner prefix (, , etc.) to the prefix, allowing herdr's osc_title_idle detection rule to fire.

Evidence

herdr's Claude detection manifest (~/.local/state/herdr/agent-detection/remote/claude.toml, version 2026.06.10.3) has:

[[rules]]
id = "osc_title_working"
state = "working"
priority = 1100
region = "osc_title"
regex = ['^[\x{2800}-\x{28FF}] ']

[[rules]]
id = "osc_title_idle"
state = "idle"
priority = 250
region = "osc_title"
regex = ['^\x{2733} ']

The working rule fires correctly. The idle rule never fires because the title is never emitted after the turn ends.

herdr agent explain output when agent is idle at prompt:

agent: claude
state: working
manifest: remote:claude.toml 2026.06.10.3
rule: osc_title_working (region=osc_title priority=1100)
evidence: "⠂ <last task description>"

Environment

  • Claude Code: latest as of 2026-06-15
  • herdr: 0.7.0
  • macOS Darwin 25.5.0
  • herdr integration v6 installed (herdr integration install claude)

Notes

  • The live_prompt_box rule (priority 950, matches in prompt region) should also detect idle, but appears not to fire — possibly the prompt box region isn't being matched either.
  • This worked correctly prior to today's Claude Code update.

View original on GitHub ↗

This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗