{
  "slug": "circleci-run-approve-approves-an-approval-job-on-hold-2d76e28f5415",
  "title": "circleci run approve approves an approval job on hold",
  "tools": [
    "circleci"
  ],
  "tags": [
    "agent"
  ],
  "introduced_at": "2026-10-20T20:14:58.000Z",
  "announced_at": "2026-10-20T20:14:58.000Z",
  "effective_at": null,
  "date_basis": "source-publication",
  "status": "unknown",
  "how": {
    "incantation": "When a run has an approval job on hold, use `circleci run approve` with its run number or UUID; add `--job` to select among multiple holds, and use `--force` to skip confirmation. Add `--json` for structured output.",
    "examples": [
      "circleci run approve <run-number-or-id>",
      "circleci run approve <run-number-or-id> --job <job-name-or-UUID> --force",
      "circleci run approve <run-UUID> --force --json"
    ],
    "gotchas": [
      "Version: v1.8.0",
      "<run-number-or-id> (required): Run UUID or run number from `circleci run list`; a number is looked up in the git remote’s project or `--project`.",
      "--force: Skip the confirmation prompt; required outside a terminal per the release note.",
      "--job <name-or-UUID>: Name or UUID of the approval job to approve; use to choose a specific hold.",
      "--json: Output JSON with `run_id`, `workflow_id`, `workflow_name`, `job_id`, and `job_name`.",
      "--project <slug>: Project slug, used when approving by run number.",
      "Prerequisite: Install the CircleCI CLI and log in with `circleci auth login`.",
      "Searches every workflow in the run that hasn't ended for approval jobs on hold.",
      "With one job on hold, a terminal prompts for confirmation; outside a terminal, `--force` is required.",
      "With several jobs on hold, `--job` selects one; without it, a terminal presents a list to pick from, while outside a terminal the command errors and lists the UUIDs.",
      "Structured errors: nothing on hold (exit 2), `--job` not matching (exit 5), or the job being approved by someone else in between (exit 5).",
      "`--json` returns `run_id`, `workflow_id`, `workflow_name`, `job_id` and `job_name`."
    ]
  },
  "why_it_matters": "Approve a CircleCI approval job that is on hold in a run.",
  "before": "The release note says the CLI previously required `circleci api` against the v2 endpoint to approve a hold.",
  "sources": [
    "https://github.com/CircleCI-Public/circleci-cli/releases/tag/v1.8.0",
    "https://github.com/CircleCI-Public/circleci-cli/pull/1930",
    "https://github.com/CircleCI-Public/circleci-cli/blob/v1.8.0/internal/cmd/root/testdata/help/circleci/run/approve.txt",
    "https://cli.circleci.com/reference/",
    "https://github.com/CircleCI-Public/circleci-cli/blob/v1.8.0/README.md"
  ],
  "rank": 0.97039,
  "judge": {
    "publish": true,
    "judge_model": "codex-cli/gpt-6-luna+typesafe/jev-1.13.0",
    "prompt_version": "extract-v7+enrich-v2+judge-v2x3+jev-publish-v1"
  },
  "review_state": "approved",
  "provenance": {
    "run_id": "daily-20261026-04",
    "verdict_id": "daily-20261026-04:daily-20261026-04-88bed977824b9ad1-1:gate",
    "evidence_hash": "5067040c36269fdd21ee08417a9069fcfae2b8e3f17ae5a7f9b5be0ba662e03c"
  },
  "review": {
    "draft_hash": "e5c7e213e492bde0df0038a90bf88a1c0a128842244feef2a3dffed40fd0819b",
    "reviewer": "publication-gate",
    "reviewed_at": "2026-10-20T20:14:58.000Z",
    "decision": "daily-20261026-04:gate",
    "reason": "3 of 3 judge runs approved with p_yes >= 0.9 (mean 0.97 >= 0.9; 2 needed) and Jev gave 0.82 (>= 0.6 needed)."
  }
}
