Changelog
API changes - status changes without reasons, Steers without revisions
The REST API stays at /api/v2 and the MCP server at /api/mcp. These changes apply to REST, MCP and the CLI alike; check any client that validates responses strictly or still sends a reason with a status change.
Improved
- Runs name their repository's slug.
GET /runs,GET /runs/{run}and the run start and cancel responses now carryslugon the run's repository and on each of itsrepositories. CLI 1.2 requires it, so update withnpm install -g @v12sh/before you usecli v12 runs. A client that checks responses against a fixed list of fields must accept the new one. - A failed GitHub request answers 503.
upstream_errornow returns HTTP 503 instead of 502, so a client that retries only on 502 must retry on 503 too. See Errors. - Push credentials check the branch name. The branch must be a valid Git branch name; a name Git refuses, such as
a..b, one that starts with-, or one that ends in.lock, now gets 400.
Removed
- Reasons on status changes.
PATCH /findings,PATCH /findings/and the{finding} update_findingstool refusereasonwith 400invalid_request, andv12 findings statusno longer takes--reason. Stop sending it; to say why, comment on the finding. See Triage the inbox. - Reasons in finding responses. A finding's
decisionis now{ "kind": ... }withoutreason, and theassessed,marked-fixedandmarked-presententries in its activity have noreason. Reasons recorded earlier are no longer returned. A client that requires these fields must stop requiring them; CLI 1.1 and older do, so update withnpm install -g @v12sh/. See Findings.cli - Steer events in a finding's activity. A
changedentry no longer hassteeras itsfield, and adecisionchange carries the decision kind as itsvalue. A client that switches onfieldcan drop itssteercase. See the REST reference. - Steer revisions.
revisionis gone from Steers and from the Steers a run carried, andsteerRevisionsfrom a run estimate. A run still keeps every Steer document as it was when the run started. See Steers.