Describe the bug
The Claude Code SDK fails to parse valid bash syntax during script analysis in GitHub Actions, throwing a "Bad substitution: all_badges:+" error. The same bash code
works perfectly when executed locally.
To Reproduce
Steps to reproduce the behavior:
- Create a bash script with this variable assignment:
all_badges="${ready_for_approval_badge} ${all_badges}"
- Set up a GitHub Action workflow using anthropics/claude-code-action@v1
- Configure Claude to review the code
- Run the workflow
- See error: Error: Bad substitution: all_badges:+
Expected behavior
The SDK should successfully parse this valid bash syntax. The expression all_badges="${ready_for_approval_badge} ${all_badges}" is standard bash variable expansion
and should not cause parsing errors.
Screenshots
Error: Bad substitution: all_badges:+
at P (/home/runner/work/_actions/anthropics/claude-code-action/v1/base-action/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:66:3347)
at (/home/runner/work/_actions/anthropics/claude-code-action/v1/base-action/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:66:4002)
at map (native:1:11)
at u1K (/home/runner/work/_actions/anthropics/claude-code-action/v1/base-action/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:66:3089)
...
Error: Failed to parse command: Bad substitution: all_badges:+
at BB1 (/home/runner/work/_actions/anthropics/claude-code-action/v1/base-action/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:4796:117)
Workflow yml file
name: Claude Code Review
on:
workflow_call:
inputs:
pr_number:
required: true
type: number
pr_author:
required: true
type: string
head_ref:
required: true
type: string
secrets:
CLAUDE_CODE_OAUTH_TOKEN:
required: true
jobs:
claude-review:
runs-on: ubuntu-latest
if: github.event.pull_request.user.login != 'dependabot[bot]'
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
ref: ${{ inputs.head_ref }}
fetch-depth: 0
- name: Claude Code Review
uses: anthropics/claude-code-action@v1
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
anthropic_api_key: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}
prompt_file: .github/claude-review-prompt.md
API Provider
Minimal reproducible example:
#!/bin/bash
all_badges=""
ready_for_approval_badge="test"
all_badges="${ready_for_approval_badge} ${all_badges}" # This line causes SDK parsing error
echo "$all_badges”
This valid bash code triggers the parsing error in Claude Code SDK but executes correctly in any bash shell.
Describe the bug
The Claude Code SDK fails to parse valid bash syntax during script analysis in GitHub Actions, throwing a "Bad substitution: all_badges:+" error. The same bash code
works perfectly when executed locally.
To Reproduce
Steps to reproduce the behavior:
all_badges="${ready_for_approval_badge} ${all_badges}"Expected behavior
The SDK should successfully parse this valid bash syntax. The expression all_badges="${ready_for_approval_badge} ${all_badges}" is standard bash variable expansion
and should not cause parsing errors.
Screenshots
Error: Bad substitution: all_badges:+
at P (/home/runner/work/_actions/anthropics/claude-code-action/v1/base-action/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:66:3347)
at (/home/runner/work/_actions/anthropics/claude-code-action/v1/base-action/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:66:4002)
at map (native:1:11)
at u1K (/home/runner/work/_actions/anthropics/claude-code-action/v1/base-action/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:66:3089)
...
Error: Failed to parse command: Bad substitution: all_badges:+
at BB1 (/home/runner/work/_actions/anthropics/claude-code-action/v1/base-action/node_modules/@anthropic-ai/claude-agent-sdk/cli.js:4796:117)
Workflow yml file
name: Claude Code Review
on:
workflow_call:
inputs:
pr_number:
required: true
type: number
pr_author:
required: true
type: string
head_ref:
required: true
type: string
secrets:
CLAUDE_CODE_OAUTH_TOKEN:
required: true
jobs:
claude-review:
runs-on: ubuntu-latest
if: github.event.pull_request.user.login != 'dependabot[bot]'
API Provider
Anthropic First-Party API (default)
Additional context
Minimal reproducible example:
This valid bash code triggers the parsing error in Claude Code SDK but executes correctly in any bash shell.