diegosouzapw/OmniRoute · error · SentinelBlockedError
Sentinel /chat-requirements blocked (HTTP ${crResp.status})
Error message
Sentinel /chat-requirements blocked (HTTP ${crResp.status}) What it means
Error "Sentinel /chat-requirements blocked (HTTP ${crResp.status})" thrown in diegosouzapw/OmniRoute.
Source
Thrown at open-sse/executors/chatgpt-web.ts:484
/* keep empty */
}
// Stage 2: POST /chat-requirements with the prepare_token in the body. This
// is the call that actually returns the chat-requirements-token used on the
// conversation request.
if (!prepData.prepare_token) {
return prepData; // pass through whatever we got — caller handles missing fields
}
const crBody: Record<string, unknown> = { p: prekey, prepare_token: prepData.prepare_token };
const crResp = await tlsFetchChatGpt(SENTINEL_CR_URL, {
method: "POST",
headers,
body: JSON.stringify(crBody),
timeoutMs: 30_000,
signal,
});
if (crResp.status === 401 || crResp.status === 403) {
throw new SentinelBlockedError(`Sentinel /chat-requirements blocked (HTTP ${crResp.status})`);
}
if (crResp.status >= 400) {
// Fall back to whatever /prepare returned — some accounts may not need stage 2.
return prepData;
}
try {
const crData = JSON.parse(crResp.text || "{}") as ChatRequirements;
// Merge: prepare_token from stage 1, everything else from stage 2.
return { ...crData, prepare_token: prepData.prepare_token };
} catch {
console.warn("[chatgpt-web] chat requirements response JSON parse failed");
return prepData;
}
}
class SentinelBlockedError extends Error {
constructor(message: string) {
super(message);View on GitHub (pinned to a179ffed5b)
When it happens
Trigger: Thrown at open-sse/executors/chatgpt-web.ts:484 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of diegosouzapw/OmniRoute@a179ffed5b (2026-08-25).
Data as JSON: /api/errors/14321a21dcc1ce8b.
Report an issue: GitHub.