Watch GitHub Actions
Monitor GitHub Actions workflow runs using the gh CLI.
Prerequisites
- The
ghCLI must be authenticated (gh auth status) - You must be in a git repository with a GitHub remote
Quick Status Check
List recent workflow runs for the current branch:
gh run list --branch "$(git branch --show-current)"List all recent runs:
gh run listWatch a Run in Real Time
Watch a workflow run until it completes:
gh run watchWatch a specific run:
gh run watch <run-id>This will continuously update the status until the run finishes (success, failure, or cancelled).
View Run Details
View a specific run with job details:
gh run view <run-id>View with full log output:
gh run view <run-id> --logView a failed job's log:
gh run view <run-id> --log-failedCheck Runs for a Specific Branch
Current branch:
gh run list --branch "$(git branch --show-current)"Specific branch:
gh run list --branch main
gh run list --branch feature-branchCheck Runs for a PR
List workflow runs associated with a PR:
# Get the head branch of the PR, then list runs
BRANCH=$(gh pr view <pr-number> --json headRefName --jq '.headRefName')
gh run list --branch "$BRANCH"Or view the checks directly on the PR:
gh pr checks <pr-number>List Recent Runs
List runs for the current project:
gh run listFilter by status:
gh run list --status failure
gh run list --status success
gh run list --status in_progressFilter by workflow:
gh run list --workflow "CI"JSON output for scripting:
gh run list --json databaseId,status,headBranch,url --jq '.[] | {id: .databaseId, status: .status, branch: .headBranch, url: .url}'View Job Logs
For Trivy Changes, inspect the Resolve PR baseline step for the base and head
SHAs. PR runs compare the tested merge commit with its
first parent; change detection and scans must use the same pair. On reruns, do
not substitute the current main tip or the event's older PR base SHA. Merge
groups and manual runs use their explicit baseline. Findings are reported by
Reject new high or critical findings; distinguish those from scanner failures.
For Protobuf Compatibility, check the logged train and comparison baseline.
Branch Checks compares the prospective merge tree with its target; Release Tag
compares the tagged candidate with the previous stable release. Both use
the shared check-protobuf-compatibility action with nix run .#check-protobuf-compatibility -- <ref>.
During 0.x, a minor train permits compatibility findings
as warnings; a patch train or no active train rejects them. Compare the current
train's version with the latest stable release; commit messages are irrelevant.
Compilation, baseline, and tool errors remain fatal. The protobuf_compatibility suite participates in
the release-tag-v1 qualification profile. Failed qualification prevents stable
publication but still allows pre-release artifacts to publish with the failure
recorded.
View logs for a specific run:
gh run view <run-id> --logView only failed job logs:
gh run view <run-id> --log-failedWait for Run Completion (Scripting)
Watch and wait for a run to complete:
RUN_ID=$(gh run list --branch "$(git branch --show-current)" --limit 1 --json databaseId --jq '.[0].databaseId')
gh run watch "$RUN_ID" --exit-status
echo "Run finished with exit code: $?"Open Run in Browser
Open the latest run in your default browser:
gh run view --webOpen a specific run:
gh run view <run-id> --webRerun Failed Jobs
Rerun all failed jobs in a run:
gh run rerun <run-id> --failedRerun an entire run:
gh run rerun <run-id>Useful Commands Reference
| Command | Description |
|---|---|
gh run list |
List recent workflow runs |
gh run list --branch <branch> |
List runs for a specific branch |
gh run list --status failure |
List failed runs |
gh run watch |
Watch latest run until completion |
gh run watch <run-id> |
Watch a specific run until completion |
gh run view <run-id> |
View run details and job list |
gh run view <run-id> --log |
View full run logs |
gh run view <run-id> --log-failed |
View only failed job logs |
gh run view --web |
Open run in browser |
gh run rerun <run-id> |
Rerun a workflow run |
gh run rerun <run-id> --failed |
Rerun only failed jobs |
gh run cancel <run-id> |
Cancel a running workflow |
gh pr checks <pr-number> |
View PR check statuses |
Common Flags
| Flag | Description |
|---|---|
-b, --branch |
Specify branch (default: current branch) |
--status |
Filter by status (queued, in_progress, etc.) |
--workflow |
Filter by workflow name |
-L, --limit |
Maximum number of runs to list |
-w, --web |
Open in browser |
--json |
Output as JSON with specified fields |
--jq |
Filter JSON output with jq expression |
Example Workflow
- Push your changes and create/update a PR
- Watch the workflow run:
gh run watch - If a job fails, view the failed logs:
gh run view <run-id> --log-failed - Rerun the failed jobs if needed:
gh run rerun <run-id> --failed