Skip to content
Latchkey

GitHub Actions Composite Action "no such file" - Use github.action_path

A composite action fails to run a script it ships because run: steps resolve paths from the consumer's workspace, not the action's own directory. The fix is to anchor paths to github.action_path.

What this error means

A composite action calls its own helper script (e.g. ./scripts/setup.sh) and fails with "No such file or directory", because the relative path is resolved from the caller's checkout, not the action.

.github/actions/setup/action.yml
# inside the composite action.yml
- run: ./scripts/setup.sh
  shell: bash
# fails: ./scripts is looked up in the CONSUMER's workspace, not the action

Common causes

run: paths resolve from the workspace

In a composite action, run: steps execute with the consumer's working directory. A relative path to a file shipped inside the action does not exist there.

Action not checked out alongside its scripts

Bundled scripts live wherever the action was downloaded. Without github.action_path you have no stable way to reference them.

How to fix it

Anchor paths to github.action_path

Reference the action's own directory via the github.action_path context so bundled files resolve regardless of the consumer's workspace.

.github/actions/setup/action.yml
runs:
  using: composite
  steps:
    - run: "${{ github.action_path }}/scripts/setup.sh"
      shell: bash

Make scripts executable and portable

  1. chmod +x the bundled scripts (or invoke them via bash <path>).
  2. Use github.action_path for every file the action ships.
  3. Avoid assuming the consumer checked the action out into a known relative path.

How to prevent it

  • Reference bundled action files via github.action_path.
  • Do not rely on relative paths to the consumer workspace inside an action.
  • Ship executable scripts or invoke them through an interpreter.

Frequently asked questions

What causes "github.action_path"?
In a composite action, run: steps execute with the consumer's working directory. A relative path to a file shipped inside the action does not exist there.
How do I fix github.action_path?
Reference the action's own directory via the github.action_path context so bundled files resolve regardless of the consumer's workspace.

Related guides

References

Latchkey auto-heals failures like this one - detected, fixed, and retried without you. Start free → 30-day trial · No credit card