[BUG] Embedded commands (!`cmd`) in skill/command markdown silently fail in CI environment (claude-code-action)

Resolved 💬 3 comments Opened Apr 17, 2026 by ncaq Closed May 25, 2026

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?

Embedded commands (` !cmd ` syntax) in skill/command markdown files silently fail when running via claude-code-action (Agent SDK mode) in GitHub Actions CI. The command produces no output and no error — it simply returns nothing.

The same command succeeds when the LLM is instead instructed to run it via the Bash tool.

What Should Happen?

Embedded commands should execute and return their output, just as they do in interactive Claude Code sessions.

Error Messages/Logs

No error messages are produced. The embedded command silently returns empty output.

Steps to Reproduce

  1. Create a plugin skill with an embedded command in the markdown:
---
description: Example skill
allowed-tools: Bash(node:*)
---

# Run detection

!`node ${CLAUDE_PLUGIN_ROOT}/dist/bin/detect-context.js $ARGUMENTS`
  1. Invoke this skill via claude-code-action in a GitHub Actions workflow (Agent SDK mode).
  1. The embedded command produces no output and no error.
  1. As a workaround, change the skill to instruct the LLM to run the command via the Bash tool instead:
---
description: Example skill
allowed-tools: Bash(node:*)
---

# Run detection

Run the following command and interpret the JSON result:

node ${CLAUDE_PLUGIN_ROOT}/dist/bin/detect-context.js $ARGUMENTS

  1. The Bash tool approach works correctly — the node script executes and its output is available to the LLM.

Additional Context

  • ${CLAUDE_PLUGIN_ROOT} itself works correctly (hooks and other configurations using it function fine).
  • The problem is specifically with the ` !cmd ` template expansion mechanism, not with variable substitution.
  • This was observed when running via claude-code-action with USE_AGENT_SDK: "true" (default). It is unknown whether this also affects --print mode or interactive sessions.
  • Workaround applied in ncaq/konoka@539133b: changed embedded commands to Bash tool instructions, which resolved the issue.
  • A separate workaround was also needed in the action layer (ncaq/kyosei-action@9ed1515): writing claude-user-request.txt to trigger multi-block message processing for slash command support, though it's unclear if this is related to the same root cause.

Claude Model

Opus

Is this a regression?

I don't know

Last Working Version

_No response_

Claude Code Version

2.1.112

Platform

Anthropic API

Operating System

Ubuntu (GitHub Actions runner)

Terminal/Shell

Other

View original on GitHub ↗

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