[BUG] Skill execution message appears twice - regression of #9899
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 invoking a skill using the Skill tool (via use skill <name> command or programmatically), the status message "The {skill-name} is running" appears twice in the terminal output instead of once.
This is a UI/display regression of previously fixed issue #9899.
What Should Happen?
The status message should appear only once:
> The "commit" skill is running
⎿ Allowed 1 tools for this command
Error Messages/Logs
> The "test-double" skill is running
⎿ Allowed 1 tools for this command
> The "test-double" skill is running
⎿ Allowed 1 tools for this command
Note: This is not an error output, but the duplicated UI message demonstrating the bug.
Steps to Reproduce
Minimal reproducible example:
- Create test skill directory:
``bash``
mkdir -p ~/.claude/skills/test-double
- Create
~/.claude/skills/test-double/skill.md:
```yaml
---
name: test-double
description: Test skill to verify double execution
version: 1.0.0
allowed-tools: |
Bash(~/.claude/skills/test-double/test.sh)
---
# Test Skill
Run: ~/.claude/skills/test-double/test.sh
```
- Create
~/.claude/skills/test-double/test.sh:
``bash``
#!/bin/bash
echo "Skill executed at $(date '+%Y-%m-%d %H:%M:%S.%N')"
echo "$(date '+%Y-%m-%d %H:%M:%S.%N')" >> /tmp/claude-skill-test.log
exit 0
- Make executable:
``bash``
chmod +x ~/.claude/skills/test-double/test.sh
- In Claude Code, type:
use skill test-double
- Observe the duplicate message in output
Verification that skill executes only once:
cat /tmp/claude-skill-test.log
# Shows only one timestamp, confirming this is a display bug only
Claude Model
Sonnet (default)
Is this a regression?
Yes, this worked in a previous version
Last Working Version
Unknown - need to verify which version between 2.0.22 (where fix was applied) and 2.0.31 (current) introduced the regression.
Claude Code Version
2.0.31 (Claude Code)
Platform
Anthropic API
Operating System
macOS
Terminal/Shell
IntelliJ IDEA terminal
Additional Information
Investigation Results
✅ Confirmed: This is a UI/display issue only, not actual duplicate execution
Test methodology:
Created a test skill that logs each execution with timestamp to verify execution count.
Results:
- Message displayed twice in TUI
- Skill executed only once (verified via log file)
- Purely a rendering/display bug
Debugging Hints for Maintainers
This is likely a TUI message accumulation or state clearing issue. The skill invocation handler may be:
- Rendering the status message multiple times
- Not properly clearing message buffers between skill invocations
- Duplicating command messages in the TUI event loop
Suggested areas to investigate:
- TUI message rendering logic for skill status
- Command message deduplication in the interface
- State management between skill invocations
- Event handlers that trigger status message display
Impact
Severity: Low (cosmetic/UX issue)
- Creates user confusion about execution count
- Clutters terminal output
- Suggests potential instability in previously-fixed TUI message handling
Environment Details
- No hooks configured in
~/.claude/config.json - Tested with multiple skills (
commitandtest-double) - issue is consistent - Does not affect skill functionality or execution
Related Issues
- #9899 - Original issue (closed Oct 19, 2025) - "The ... skill is running appears twice"
- #9602 - Hook regression with duplicate messages (closed Oct 22, 2025)
This issue has 4 comments on GitHub. Read the full discussion on GitHub ↗