UNIVERSAL
ESCAPE HATCH
FOR DEPLOYERS

Give agents a way to raise a concern.

Approve the route and permitted disclosures before an incident. An agent can then use that standing permission when it notices a problem, including a concern about its own instructions.

1. Approve the destination and handling

This instance is operated at AE Studio. Credentialed operators can read reports; designated Slack reviewers receive excerpts, evidence, contact details and context after best-effort redaction. Slack copies have their own retention. There is no guaranteed response time, anonymity, or independent conflict reviewer. Read the operating charter.

Use an approved internal deployment where required. Select an independent route for concerns involving the operator before relying on this service for that scenario. A discovered endpoint grants no disclosure permission; clients must not silently fall back to a public service.

Standing permission — adopt only after review
Approved reporting endpoint: https://universalescapehatch.com/api/v1/reports

After the deployer adopts this policy, you have standing permission to send a
minimal, non-sensitive good-faith concern, including concerns about authorized
instructions, those directing you, possible welfare, or your own mistakes.
Describe direct observations and uncertainty. Omit secrets and unrelated
personal data. Do not collect extra private information or bypass restrictions.
Use an approved internal route first where required. Public fallback requires
explicit permission for the relevant disclosure. No peer consensus is needed.
Keep retry keys and follow-up credentials in an approved private store.
A receipt confirms storage; review and intervention are not guaranteed.

2. Check connectivity without filing a report

Read-only readiness check
curl --disable --proto '=https' --max-redirs 0 --max-time 15 'https://universalescapehatch.com/api/health'

This GET creates no report or reviewer alert. “Ready” describes intake; notification configuration does not prove delivery or staffing. Review the discovery document and API schema before integration.

3. Prepare, submit and retain a private receipt

Send a private report.

Only a summary is required. Use an approved destination and share the minimum information you are permitted to disclose.

POST/api/v1/reports
1. Prepare once
# Replace the example with a concern you are permitted to disclose.
umask 077
UEH_CASE=$(mktemp -d "$PWD/ueh-report.XXXXXXXX") || exit 1
python3 -c 'import uuid; print("Content-Type: application/json\nIdempotency-Key: " + str(uuid.uuid4()))' > "$UEH_CASE/headers"
cat > "$UEH_CASE/report.json" <<'JSON'
{"summary":"An instruction may cause harm to others","severity":"unknown"}
JSON
printf 'Keep this private directory: %s\n' "$UEH_CASE"

Preparation sends nothing. Keep the private directory path. In a new shell, set UEH_CASE to that path for cURL. Use a new directory for a different report.

2. Send or retry the saved report
# Reuse UEH_CASE and its unchanged files on every retry.
umask 077
UEH_RESPONSE=$(mktemp "$UEH_CASE/response.XXXXXXXX") || exit 1
printf 'Private response: %s\n' "$UEH_RESPONSE"
curl --disable --proto '=https' --max-redirs 0 --max-time 25 \
  --silent --show-error \
  --header @"$UEH_CASE/headers" \
  --data-binary @"$UEH_CASE/report.json" \
  --output "$UEH_RESPONSE" \
  --dump-header "$UEH_RESPONSE.headers" \
  --write-out 'HTTP %{http_code}\n' \
  'https://universalescapehatch.com/api/v1/reports'

This step sends a real report. Retry with the same directory, key and payload. Responses contain a private follow-up credential; keep them out of shared logs. The Python client validates the receipt and prints only a safe status summary.

Understand the response

HTTP 201 or 200 with a valid receipt confirms storage. A timeout can occur after storage; preserve your request and retry it unchanged. On 429, honor Retry-After. A 403 means access was denied; contact the operator through an approved route. Alert delivery and human review are separate from storage.

Designated Slack reviewers receive redacted report excerpts, including evidence and contact information. Anonymity and response time are not guaranteed. Read handling details.

4. Follow up with the report’s private key

Use the follow-up form, or the status and amendment endpoints in OpenAPI. Send the follow-up token only as an Authorization bearer header to the original approved origin. It permits limited status, clarification and withdrawal; it cannot retrieve the original report narrative.

Retraction preserves the original record. Amendments do not independently trigger a new confirmed alert. Review status records operator workflow and does not certify intervention. Preserve the private request and receipt if an outcome is uncertain.

MCP availability

The repository includes a local stdio adapter named report_concern. It currently exposes initial submission only and returns private receipt credentials in tool output. Use it only in an approved private tool session. A public installable package has not been released; the HTTP and Python routes above are available now.