| name | circleci-cli |
| description | Day-to-day CircleCI from the terminal with the circleci CLI — authenticate, validate config before you commit, watch the run your push triggered, review pipeline/workflow/job status, read job logs and failed tests, download artifacts, and rerun/cancel/trigger. Use when a developer asks to authenticate CLI access, check their build or pipeline status, watch a run after pushing, see why CI failed, read job output/logs, find failing tests, rerun failed jobs, cancel or re-trigger a run, or validate a config change locally. For first-time project connection / pipeline-definition setup use the onboarding skill; for the diagnose-and-fix methodology on a failing build use circleci-builds. |
CircleCI day-to-day developer workflow (CLI)
The everyday loop: change config → commit/push → watch the run → read failures → rerun.
Almost every command infers the project from the current git remote and the branch from
your checked-out branch, so from inside a repo you rarely pass --project/--branch.
Preflight once: circleci version and circleci api api/v2/me (auto-reads $CIRCLE_TOKEN).
1. Before you commit — validate locally (fast feedback)
circleci config validate
circleci config process .circleci/config.yml
circleci config process .circleci/config.yml --pipeline-parameters params.yml
validate --org gh/<org> is needed to resolve private orbs.
-n/--next previews upcoming (potentially breaking) config changes.
- Scaffold a starter config for a new repo:
circleci config generate [path] (won't overwrite).
Handy git hook — block a push when the config is invalid (.git/hooks/pre-push):
#!/bin/sh
circleci config validate || { echo "Fix .circleci/config.yml before pushing"; exit 1; }
2. Commit, push, and watch the run it triggers
git push
circleci run watch
circleci run watch --sha "$(git rev-parse HEAD)"
circleci run watch --failfast
run watch exit codes make it scriptable: 0 all workflows passed · 1 something
failed · 6 cancelled · 8 timed out (--timeout, default 30m). Chain it:
git push && circleci run watch --sha "$(git rev-parse HEAD)".
3. Review your pipelines / runs
circleci run list
circleci run get
circleci run get <run-id>
circleci my runs
circleci run open
run get shows the run → workflow → job tree. Add --json to pull IDs for drilling in
(workflows[].id, workflows[].jobs[].id) — those UUIDs feed the commands below.
4. Drill into a failure
circleci run get --json --jq '.workflows[].jobs[] | select(.current_outcome=="failed") | {name,id}'
circleci job output list <job-id>
circleci job output get <job-id> --step-num <N>
circleci job get <job-id>
circleci testresult list <job-id>
circleci job artifact <job-id>
Parallel jobs: job output list --execution <index> targets one shard.
5. Act on a run
circleci workflow rerun <workflow-id>
circleci workflow rerun <workflow-id> --from-failed
circleci run cancel <run-number-or-id>
circleci run trigger
circleci run trigger -b <branch> --parameter deploy=true --parameter tier=2
circleci workflow cancel <workflow-id>
To debug interactively (SSH into a job), rerun with SSH from the web app — there is no
CLI flag for it; circleci run open gets you there fast.
Troubleshooting — where to get each piece of information
| You want to know… | Command |
|---|
| Did my push build? Which run? | circleci run watch --sha "$(git rev-parse HEAD)" / circleci run list -B |
| Overall status of the latest run | circleci run get |
| Which workflow/job failed | circleci run get --json --jq '.workflows[].jobs[] | select(.current_outcome=="failed")' |
| Why a step failed (logs) | circleci job output list <job-id> → job output get <job-id> --step-num N |
| Which tests failed | circleci testresult list <job-id> |
| Build outputs / reports | circleci job artifact <job-id> -o ./artifacts |
| Config problem before pushing | circleci config validate / circleci config process |
| Config error in the UI vs local | validate with --org to match private-orb resolution |
| Everything I triggered lately | circleci my runs |
| Open it in the browser | circleci run open, circleci workflow open, circleci job open |
| CircleCI feature/config syntax question | use the circleci-config skill / docs MCP rather than guessing |
Gotchas
- Commands default to the git remote's project and your current branch —
cd into the
repo. Override with --project gh/<org>/<repo> and -b <branch> when outside it (note:
run get/run open default the branch to main when --project is set, not your checkout).
run watch --sha polls up to 2 minutes for the run to appear — expected right after a push.
- Logs, tests, and artifacts key off the job UUID (from
run get --json /
workflow get), not the job number.
run cancel takes a run number or UUID; pass --project when cancelling by number.
circleci api <path> defaults to /api/v3 — prefix api/v2/... explicitly for v2 endpoints.
- Don't confuse
run trigger (this skill: fire a run on the inferred project/branch) with
pipeline run --definition-id … (definition-targeted; see the onboarding skill).
- Verify a real run +
job output/testresult — a green status alone doesn't prove the
step did what you intended.
Guardrails
- Read before you mutate. Prefer read-only commands (
run get/list, job output,
testresult, job artifact) before rerun/trigger/cancel, and confirm the
organization/project scope before mutating pipeline state.
- Never print raw secret values from environment variables or tokens. Pipe secrets from
op read/stdin — never pass them as command-line args (they leak into shell history and logs).
- Don't invent commands. Current CLI (≥1.0) exposes
pipeline, project, trigger,
run, job, workflow, config, and api. Verify with circleci help first; if a
subcommand isn't listed, don't use it. On older builds that lack api/logs, fall back to
the pipeline/trigger/run verbs and read cloud job logs from the CircleCI app/UI or
connected CircleCI MCP tooling.
- If auth/permissions fail, report the exact scope gap and safest remediation
(
circleci auth login, refresh permissions in User Settings) rather than retrying blindly.
Report back
When you finish, summarize:
- Commands run and their purpose.
- Key outputs — pipeline/workflow/job ids, status, failing step.
- Actions taken (rerun/trigger/validate) and why.
- Remaining blockers and the next recommended CLI command.