SSH into GitHub Actions using wush. Debug workflows as if they were running on your machine.
- Add
coder/wush-action
to a GitHub Actions workflow:
jobs:
wush:
steps:
...
- uses: coder/[email protected]
timeout-minutes: 30
...
- Install wush on your local machine:
curl -fsSL https://github.com/coder/wush/raw/refs/heads/main/install.sh | sh
- Copy the authentication key from GitHub Actions logs:

- Run
wush ssh
, and paste the key.

- You're in!

- Linux (
x86_64
andarm64
) - Windows (
x86_64
andarm64
) - macOS (
x86_64
andarm64
)
Wush establishes a WireGuard tunnel between your local machine and a GitHub Actions runner - traffic is E2E-encrypted. It doesn't require you to trust any 3rd party authentication or relay servers, instead using x25519 keys to authenticate connections.
For more information, see wush's README and source code.
To run coder/wush-action
regardless of whether a job succeeds or fails, consider using ${{ !cancelled() }}
instead of ${{ always() }}
:
jobs:
wush:
steps:
...
- name: Run wush
if: ${{ !cancelled() }}
uses: coder/[email protected]
always()
is immune to cancellation, so you won't be able to stop wush
by cancelling the workflow. Instead, you'll need to SSH into GitHub Actions and kill the wush
process manually.