tinyhumansai/openhuman · error · anyhow::Error
no pending approval ever registered for request_id '{request
Error message
no pending approval ever registered for request_id '{request_id}' What it means
Decide-miss disambiguation in approval_decide: the conditional UPDATE matched zero rows and gate.classify_decide_miss reports the never-registered case — no approval request with this request_id was ever parked in this session. Unlike the benign already-decided/expired race at rpc.rs:236, this distinct wording stays a captured Sentry signal (TAURI-RUST-5EH); the faulting input is an unknown or foreign-session request_id.
Source
Thrown at src/openhuman/security/approval/rpc.rs:245
// "no pending approval found" wording that `expected_error_kind`
// demotes, while the never-registered arm emits a distinct string
// that stays a captured Sentry signal.
return match gate.classify_decide_miss(request_id) {
DecideMiss::AlreadyResolved => {
tracing::warn!(
request_id = request_id,
"[rpc:approval_decide] no pending approval found (already decided/expired — benign race)"
);
Err(anyhow!(
"no pending approval found for request_id '{request_id}' (already decided or expired)"
))
}
DecideMiss::NeverRegistered => {
tracing::warn!(
request_id = request_id,
"[rpc:approval_decide] no pending approval ever registered (genuine lost registration)"
);
Err(anyhow!(
"no pending approval ever registered for request_id '{request_id}'"
))
}
};
}
};
let mut logs = vec![format!(
"[approval] decided request_id={} tool={} decision={}",
row.request_id,
row.tool_name,
decision.as_str()
)];
// "Always allow": persist the tool onto the user's `autonomy.auto_approve`
// allowlist (config save + live-policy reload) so the gate skips prompting
// for it on future turns — this session and across restarts. Best-effort:
// `gate.decide` already resolved the current call, so a persistence failureView on GitHub (pinned to 7491200858)
Solutions
- Verify the request_id matches one emitted by a live pending approval in this session.
- Re-fetch the pending approvals list; the id may belong to a previous session or different user.
- If it recurs, check for dual-core instances or session mismatch between UI and core.
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at src/openhuman/security/approval/rpc.rs:245 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/fa4771cf5df81f64.
Report an issue: GitHub.