tinyhumansai/openhuman · error · anyhow::Error
approval gate is not installed; supervised mode disabled
Error message
approval gate is not installed; supervised mode disabled
What it means
Global-state guard in approval_decide: ApprovalGate::try_global() returns None because the approval gate was never installed in this process (e.g. OPENHUMAN_APPROVAL_GATE=0), yet a decision arrived. There is no pending-approval registry to apply the decision to, so the RPC fails instead of silently succeeding. The faulting condition is gate absence, not a bad request id.
Source
Thrown at src/openhuman/security/approval/rpc.rs:206
}
/// Apply a decision to a pending row. Errors when the request id is
/// unknown / already decided / belongs to a different session.
pub async fn approval_decide(
request_id: &str,
decision: ApprovalDecision,
) -> anyhow::Result<RpcOutcome<PendingApproval>> {
tracing::debug!(
request_id = request_id,
decision = decision.as_str(),
"[rpc:approval_decide] entry"
);
let gate = ApprovalGate::try_global().ok_or_else(|| {
tracing::warn!(
request_id = request_id,
"[rpc:approval_decide] gate not installed"
);
anyhow!("approval gate is not installed; supervised mode disabled")
})?;
let decided = match gate.decide(request_id, decision) {
Ok(row) => row,
Err(err) => {
tracing::error!(
request_id = request_id,
error = %err,
"[rpc:approval_decide] gate decide failed"
);
return Err(err);
}
};
let row = match decided {
Some(row) => row,
None => {
// `gate.decide` returned `Ok(None)`: the conditional UPDATE matched
// 0 rows. Disambiguate the benign already-decided/expired race from
// a genuine lost registration so only the latter reaches SentryView on GitHub (pinned to 7491200858)
Solutions
- Enable the approval gate (remove OPENHUMAN_APPROVAL_GATE=0 or set it to 1) and restart the core.
- Do not send approval decisions when the gate is disabled; the UI should hide the approval card.
- Check startup logs to confirm whether the gate was installed.
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at src/openhuman/security/approval/rpc.rs:206 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of tinyhumansai/openhuman@7491200858 (2026-08-17).
Data as JSON: /api/errors/5628b48e634a27ba.
Report an issue: GitHub.