DocsSecurity
Emergency stop
Pause gateway traffic for the organization, one environment, one project or every key but the ones you name, without a deploy, and resume it in one step.
On the roadmap — not available yet. The emergency stop is built and in testing, and not deployed. This page describes what it will ship with.
The emergency stop pauses your organization's AI traffic through INFRO in one step: no deploy, no key revoked, nothing deleted. Keys keep their secrets, limits and settings, and connections stay connected; resuming makes the same keys work again on their next request. It is on every plan.
What it stops
You choose one scope each time you press it:
| Scope | Stops | Keeps working |
|---|---|---|
| Organization | Every gateway request, the MCP gateway's tool calls, the Playground (with a gateway key or a connection test) and INFRO Studio. | Nothing that calls a model. |
| One environment | Gateway keys in that environment, Playground connection tests whose connection's first environment it is, and Studio runs when the environment is production (Studio counts as production). | Keys in other environments, and keys that name no environment. |
| One project | Gateway keys in that project. | Every other key, Playground connection tests and Studio, which belong to no project. |
| Every key except | Every gateway key except the ones you name (up to 50), Playground connection tests and Studio. A named key's rotations keep running too. | The named keys. |
- A stopped request is refused with
403, typepermission_denied, codeorganization_paused, before any budget, routing or provider call. It is not retryable: the same request is refused until the stop is released. - It is not
organization_suspended, which is INFRO's own hold on an account and is resolved by contacting support. When both apply,organization_suspendedis returned. - Video jobs that are queued and not yet sent to the provider fail. A render the provider has already accepted finishes there. Studio refuses a run that would start, and each step before it is sent.
- Reads keep working: the console, request history,
GET /v1/usageandGET /v1/key. Requests a stopped key makes that read the routing configuration (GET /v1/models, cost estimates, token counts) are refused like model calls. Checks INFRO runs on your connections (connection health, cost and usage reads) are not traffic and keep running. - It holds everywhere within five seconds of pressing, because each gateway process keeps an organization's settings for up to five seconds. Releasing it takes the same time.
Press it
- Under Security, choose Emergency stop and the scope.
- Say why, in a few words (3 to 500 characters). Every member's email carries it.
- Confirm it's you: the stop needs a confirmation from the last 10 minutes in this browser, like deleting the organization.
Only one stop is in force at a time. Pressing a new one replaces the one in force in the same step, so traffic is never released in between; the old one is listed as replaced. If two members press it at the same instant, one of them gets 409 pause_conflict and reloads to see the stop in force.
Pressing and releasing are each in the audit log (organization.paused, organization.resumed, with the scope, the reason and the IP address), and each raises a critical signal that is emailed to every member and cannot be muted. Both work while the organization is locked for a lapsed plan or held, since they only stop traffic.
Release it
Resume traffic, with an optional note, releases the stop in force. The same people who may press it may release it, with the same confirmation. A stop pressed through the management API or by an AI assistant is released only here, by a person.
Who holds it
- Owners, admins and Security members, with their role.
- Developer, analyst and finance members an owner or admin grants it to. The grant works only while the member has two-factor on.
- Never a creator, and never a member limited to some projects: the stop is organization-wide.
Anyone who reads the Security screen sees whether a stop is in force and the last ten.
API
Through the console session: GET /console/security/pause returns active (the stop in force, or null), history (up to the last ten) and can_stop. Each stop has id, scope, environment, project_id, except_key_ids, reason, paused_at, paused_by, resumed_at, resumed_by and ended_how (resumed or replaced).
scopestringrequiredorganization,environment,projectorkeys_except.environmentstring- Required with
environment, and only with it: one of the organization's environments (400unknown_environmentotherwise). project_idstring- Required with
project, and only with it. except_key_idsstring[]- Required with
keys_except, and only with it: 1 to 50 active gateway keys of the organization. reasonstringrequired- 3 to 500 characters.
POST /console/security/pause with that body returns 201 with pause and replaced_pause_id. POST /console/security/pause/resume with an optional note (up to 500 characters) returns {resumed: true, pause_id}, or 400 not_paused when no stop is in force. Refusals: 403 insufficient_role for a member who does not hold the stop, 403 session_required for a management token, 403 reauthentication_required when the confirmation is older than 10 minutes (the console then asks for it and retries), and 403 two_factor_required for a granted member whose two-factor is off.
On the roadmap. Security through the management API and MCP is built and not deployed. POST /manage/v1/organization/pause presses the stop with the same body, for a management token holding security:write whose creator holds the stop; the MCP tool pause_organization does the same for an AI assistant, after it confirms with you. Both are audited with the token or assistant as the actor, and every member is emailed. POST /manage/v1/organization/pause/resume always answers 403 session_required: a token or an assistant can press the stop, never release it, so a stolen token cannot restart traffic someone stopped on purpose. For the same reason, while a stop is in force a token or an assistant may only replace it with the organization scope; any other scope answers 409 pause_in_force, and a person changes the stop in the console. GET /manage/v1/organization/pause reads it.