codegeneai/Cloudflare Tunnel

Run a cloudflared connector on a GitHub Actions runner. Supports attaching to an existing tunnel via token, or creating an ephemeral named tunnel via the Cloudflare API.

View on GitHub

Trust Signals

Scorecard Score
not yet scored
Maintenance Recency
Activelast commit May 12, 2026
License
MIT

Pinned Snippet

workflow.ymlSHA-pinned
uses: codegeneai/cloudflare-tunnel-action@591b8c3e059b2e33950f9f588c82ac5e0bab8646 # v1.0.0

tags can be moved; commit SHAs can't. why a SHA?

namedescriptionrequireddefault
mode"connect" (use existing tunnel-token) or "create" (create ephemeral tunnel via API).noconnect
tunnel-tokenConnector token for an existing tunnel. Required when mode=connect.no
api-tokenCloudflare API token with Account: Cloudflare Tunnel: Edit scope. Required when mode=create.no
account-idCloudflare account ID. Required when mode=create.no
tunnel-nameName for the ephemeral tunnel. Required when mode=create.no
cleanup-on-exitWhen mode=create, delete the tunnel in the post-step.notrue
cloudflared-versioncloudflared release tag (e.g. "2026.3.0") or "latest". Pinned by default for reproducibility; use "latest" to opt into the newest release on every run.no2026.3.0
loglevelcloudflared --loglevel (debug|info|warn|error|fatal).noinfo
metricsBind address for cloudflared --metrics. localhost:0 picks a free port.nolocalhost:0
wait-for-connectionsBlock until the connector reports at least one healthy edge connection.notrue
wait-timeout-secondsMaximum seconds to wait for a healthy connection.no60
namedescription
tunnel-idThe Cloudflare tunnel ID (UUID). Always set in mode=create; best-effort decode from the token in mode=connect (may be empty for opaque tokens).
tunnel-cnameThe tunnel CNAME target: {tunnel-id}.cfargotunnel.com. Empty when tunnel-id is unknown.
metrics-urlResolved cloudflared metrics URL (e.g. http://127.0.0.1:NNN). Useful for downstream `/ready` probes.