[BUG] Skill execution message appears twice - regression of #9899

Resolved 💬 4 comments Opened Nov 1, 2025 by antikirra Closed Nov 17, 2025

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:

  1. Create test skill directory:

``bash
mkdir -p ~/.claude/skills/test-double
``

  1. 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
```

  1. 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
``

  1. Make executable:

``bash
chmod +x ~/.claude/skills/test-double/test.sh
``

  1. In Claude Code, type: use skill test-double
  1. 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:

  1. Rendering the status message multiple times
  2. Not properly clearing message buffers between skill invocations
  3. 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 (commit and test-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)

View original on GitHub ↗

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