CLI: SlashCommand/Skill execution indicators display twice

Resolved 💬 4 comments Opened Nov 10, 2025 by itsjeremyjohnson Closed Nov 13, 2025

Environment

  • Claude CLI Version: 2.0.36 (Claude Code)
  • Platform: macOS (Darwin 25.0.0)
  • Terminal: Kitty
  • Installation: CLI version (~/.local/bin/claude)

Bug Description

Tool execution indicators display twice (back-to-back) in the chat interface when using SlashCommand or Skill tools.

Affected Tools:

  • ✅ SlashCommand (e.g., /conduct-research, /prime, /bug, etc.)
  • ✅ Skill (when invoking skills)

Unaffected Tools:

  • ❌ Bash, Read, Write, Edit, Grep, Glob (normal display)
  • ❌ Task, WebSearch, WebFetch (normal display)

Reproducible Steps

  1. Launch Claude CLI in terminal
  2. Execute any slash command: /conduct-research
  3. Observe chat output

Expected Behavior:

> /conduct-research is running…
[command executes]

Actual Behavior:

> /conduct-research is running…
> /conduct-research is running…
[command executes]

Impact

Severity: Low (cosmetic only)

User Impact:

  • Duplicate messages appear back-to-back immediately
  • Creates confusion that commands are executing twice
  • In reality, commands execute once (confirmed via event logs)
  • No functional impact - purely a display rendering issue

Evidence of Single Execution:

  • Event logs show single tool invocations
  • Hooks fire once per execution
  • Agent spawning happens once (e.g., 10 agents, not 20)
  • No performance impact

Root Cause Analysis

The duplication occurs specifically in the tool execution indicator rendering for SlashCommand and Skill tools, suggesting:

  1. Special rendering path: These tools use a different display mechanism than other tools
  2. Expansion logic: SlashCommand/Skill expand templates, possibly triggering duplicate render
  3. CLI-specific: Desktop app doesn't exhibit this behavior (unconfirmed)

Additional Context

Configuration checked:

  • No duplicate command registrations in ~/.claude/settings.json
  • No shell aliases causing duplication (type claude shows clean binary)
  • No terminal echo issues (stty settings normal)
  • Hook system not generating duplicate output

Event log verification:

# PostToolUse events show single executions per command
tail -100 ~/.claude/hooks/logs/events.jsonl | \
  grep SlashCommand | \
  jq -r '.timestamp + " " + .event_type'

Suggested Fix

Investigate the rendering logic for SlashCommand and Skill tools in the CLI display layer. Likely a duplicate console.log() or double event listener firing the "tool is running" message.

Workaround

User workaround: Ignore duplicate messages - commands execute correctly once.

Reporter

Jeremy Johnson (@jeremydjohnson)

  • UFC system maintainer
  • Heavy Claude CLI user with extensive hook/command infrastructure

---

View original on GitHub ↗

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