Revoke a gate waiver
End a waiver early, putting the gate and the GitHub Check Run back. Requires the manage tier.
IDEMPOTENT, and already_revoked is a SUCCESS: it reports the ORIGINAL revocation rather than restamping it, so a retry cannot overwrite the record of who actually ended the waiver. An already-expired waiver may still be revoked — the audit trail distinguishes “this was wrong” from “this ran out”.
Authorizations
MCPJam API key (sk_…). Create one at Settings → API keys. Guest sessions cannot use the API, and API keys cannot manage other API keys.
Path Parameters
ID of the hosted project that contains the server.
Eval run ID, as returned by POST /eval-runs.
Gate waiver ID, as returned when the waiver was granted or read.
Response
The revoked waiver.
The result of granting or revoking a waiver. conflict and already_revoked are IDEMPOTENT no-op successes, not failures.
conflict — a waiver was already in force, and waiver is that EXISTING one rather than a second row. already_revoked — this waiver had already been revoked, and waiver reports the original revocation rather than restamping it, so the record of who actually ended it survives a second call.
created, conflict, revoked, already_revoked GitHub Check Runs brought back in line by this write. A published check is a persisted verdict, not a live read, so 0 on a repository with checks connected means the status that gates the merge did not move.
An audited, time-boxed override of an eval run's release gate. A waiver never changes the run's own result — the run keeps its verdict and every surface that honors the waiver says so out loud, which is what makes "no silent waiver" checkable rather than promised.

