usestrix/strix · error · RelayError
forbidden
forbidden
Error message
forbidden
What it means
RelayError('forbidden') raised by report_send() when POST /api/oss/report/send returns 403. Unlike 401 (reverify), 403 means the token is valid but the account is not permitted to use report delivery — the operation is intentionally denied, not merely unauthenticated.
Source
Thrown at strix/interface/viewer/auth.py:247
The report password is NEVER part of this payload; only the encrypted PDF
bytes travel to the relay.
"""
payload = {
"token": token,
"pdf_base64": base64.b64encode(pdf_bytes).decode("ascii"),
"filename": filename,
"run_name": run_name,
"target": target,
}
status, _ = _post_json("/api/oss/report/send", payload, timeout=_SEND_TIMEOUT)
if status == 200:
return
if status == 401:
raise RelayError("reverify")
if status == 413:
raise RelayError("too_large")
if status == 403:
raise RelayError("forbidden")
raise RelayError("unavailable")
__all__ = [
"AUTH_PATH",
"RelayError",
"feedback_submit",
"forget",
"is_verified",
"otp_start",
"otp_verify",
"read_auth",
"report_send",
"write_auth",
]
View on GitHub (pinned to 8551339130)
Solutions
- Confirm report sending is available to your verification tier; if gated, use local PDF download/export instead
- Re-verify with a qualifying work email (see work_email_required) in case entitlement is tied to verification type
- Check Strix docs/changelog for announced restrictions on the OSS report relay
- If it seems like a mistake, report it via feedback_submit with run details
Defensive patterns
Strategy: try-catch
Validate before calling
# No reliable client-side pre-check: 403 is a relay-side entitlement decision.
# Guard by offering local export as the always-available path.
def send_report_or_export(pdf, filename):
try:
report_send(token, pdf, filename, run, target)
return "sent"
except RelayError:
save_pdf_locally(pdf, filename)
return "exported-locally" Try / catch
try:
report_send(token, pdf, filename, run, target)
except RelayError as e:
if e.code == "forbidden":
show("Report delivery is not available for this account; exporting locally instead.")
save_pdf_locally(pdf, filename)
else:
raise Prevention
- Always offer local PDF export as the fallback path
- Do not auto-retry 403 — it is a policy denial, not transient
- Distinguish 403 (forbidden) from 401 (reverify) in error handling
When it happens
Trigger: Calling report_send() with a valid, unexpired token whose verification does not carry the entitlement for report sending (e.g. tier/feature gating on the relay side), or an account type the relay restricts. The 403 maps to 'forbidden' distinct from the 401 'reverify' path.
Common situations: Relay-side feature gating (report delivery limited to certain verified cohorts); policy change on app.strix.ai after the user last verified; trying to use the send endpoint from an environment or region the relay blocks.
Understand the failure class
- Authentication and authorization failures — expired tokens, bad credentials, and missing scopes.
Related errors
AI-assisted analysis of usestrix/strix@8551339130 (2026-08-15).
Data as JSON: /api/errors/93bfd92d726c6073.
Report an issue: GitHub.