diff --git a/hive-c0re/src/dashboard.rs b/hive-c0re/src/dashboard.rs index 9871fc54..4f28b01f 100644 --- a/hive-c0re/src/dashboard.rs +++ b/hive-c0re/src/dashboard.rs @@ -1684,10 +1684,16 @@ where } async fn post_kill(State(state): State, AxumPath(name): AxumPath) -> Response { - let logical = strip_container_prefix(&name); - if logical == lifecycle::MANAGER_NAME { - return error_response("kill: refusing to stop the manager"); - } + // #443: manager is stoppable from the dashboard like any other + // agent. The host's dashboard server keeps running (it's + // hive-c0re, not the manager container), per-agent approvals + // submitted by other sub-agents still process through the + // host-side approval queue without the manager up, and + // operator-driven meta-input updates work from the dashboard + // either way. The MCP-surface self-kill guard in + // `manager_server.rs::ManagerRequest::Kill` stays in place: a + // manager calling Kill on its own container is self-suicide + // mid-call, not a legitimate operator action. lifecycle_action( &state, &name,