---
title: "Force-end every active sim session for an agent (runaway recovery)."
method: POST
path: "/sim/agents/{agent_id}/force-end"
tags: ["Dojo"]
---

# Force-end every active sim session for an agent (runaway recovery).

`POST /sim/agents/{agent_id}/force-end`

## Request

- Base URL: `https://api.mnemom.ai/v1`
- URL: `https://api.mnemom.ai/v1/sim/agents/{agent_id}/force-end`
- Auth: one of:
  - HTTP bearer
  - API key in header `X-Mnemom-Api-Key`

DB-authoritative, Durable-Object-independent recovery for a stuck/runaway Dojo session: aborts every non-terminal (`pending`/`running`/`paused`) `dojo_sim_sessions` row for the agent directly in the control plane, clearing the one-active-session-per-agent lock even when the per-session runner DO has crashed or been evicted (the ghost-DO case `/sim/{session_id}/stop` cannot resolve, because that path no-ops the DB when the DO has no in-memory state). Keyed by `agent_id` because a locked-out caller holds the agent id, not the orphaned session id. Idempotent: returns `{ ok: true, ended: 0 }` when nothing was active. MNE-531.

## Path parameters

- `agent_id` string, required

## Response `200`

Active sessions aborted (or none were active).

- object
  - `ok` boolean
  - `ended` integer: Number of sessions aborted.

## Other responses

- `400`: Bad request
- `401`: Authentication required
- `403`: Forbidden
- `404`: Resource not found
- `429`: Rate-limit exceeded. The global per-IP limiter (100 requests/minute, applied to every `/v1/*` route) rejected this request. Back off until the window resets — `Retry-After` carries the cooldown in seconds and `X-RateLimit-Reset` the absolute reset time.
- `500`: Server error — request was well-formed but the server failed to fulfill it. Typically a downstream dependency (DB / RPC / external API) returned an unexpected error.

---

[API](https://skmtc.dev/mnemom/apis/mnemom-api.md) · [All operations](https://skmtc.dev/mnemom/apis/mnemom-api/llms.txt) · [OpenAPI document](https://skmtc.dev/mnemom/apis/mnemom-api/revisions/274b7a6ea182?raw)
