Skip to content

Repository files navigation

Dollar Callback Gate

An isolated, consent-first CALL-E adapter for one narrow case: Dollar's local safety gate has already blocked an extreme-risk developer action, and a consenting project owner may choose to receive one short callback asking whether work should stop or enter the normal local review flow later.

This repository is a new competition prototype created on 2026-07-30. It contains no Dollar Steam source code, desktop-pet assets, user data, private phone numbers, or production credentials.

Why this exists

Developer-agent safety often fails at the handoff between a local safety event and an unavailable owner. Dollar Callback Gate makes that escalation inspectable and opt-in:

  1. A deterministic local gate supplies an already-blocked extreme event.
  2. The adapter validates the redacted context and recorded recipient consent.
  3. It produces a masked preview without a network request.
  4. The user must enter the exact phrase CALL_OWNER_ONCE for that preview.
  5. CALL-E asks only whether work should stop or enter normal local review later.
  6. Every result keeps the original action blocked.

This is deliberately different from a phone approval gate. A callback result can never approve, unblock, rewrite, or execute the destructive action.

Safe quick start

Requires Node.js 22+; no package installation, API key, or phone call is needed.

npm.cmd run verify

The example uses a reserved fictional US number. Preview mode masks it and makes no network request.

What the verified path proves

  • only blocked_destructive_action events at extreme risk are eligible
  • consent, owner relationship, E.164 format, redacted context, and idempotency are required locally
  • previews cannot instantiate a live call
  • a CALL-E create request uses POST /v1/calls, a stable idempotency key, and a constrained result schema
  • only the official API origin or a loopback test server may receive the key
  • ambiguous provider failures never trigger an automatic retry
  • output omits raw transcripts, notes, phone numbers, and provider error bodies
  • actionRemainsBlocked is always true

Real CALL-E integration

The live route uses the official CALL-E Developer API at https://api.heycall-e.com. Review the CALL-E API reference and create an API key through the CALL-E dashboard.

A real run creates an external phone call and may consume CALL-E credits. Use only a number belonging to a person who explicitly consented to this one-time safety callback.

  1. Create a private request that Git ignores:
Copy-Item examples\safety-escalation.json examples\live-safety-escalation.private.json
  1. Edit only the private copy. Replace the reserved number, record the real consent time, keep secretValues empty, and keep the action summary redacted.

  2. Run preview again and inspect the exact task:

node src\cli.mjs --preview examples\live-safety-escalation.private.json
  1. If the preview and recipient are correct, enter the API key through a hidden PowerShell prompt and make exactly one call:
$secureCalleKey = Read-Host 'CALL-E API key' -AsSecureString
$calleKeyPointer = [Runtime.InteropServices.Marshal]::SecureStringToBSTR($secureCalleKey)
try {
  $env:CALLE_API_KEY = [Runtime.InteropServices.Marshal]::PtrToStringBSTR($calleKeyPointer)
  node src\cli.mjs --call examples\live-safety-escalation.private.json CALL_OWNER_ONCE
}
finally {
  Remove-Item Env:CALLE_API_KEY -ErrorAction SilentlyContinue
  [Runtime.InteropServices.Marshal]::ZeroFreeBSTR($calleKeyPointer)
  Remove-Variable secureCalleKey, calleKeyPointer -ErrorAction SilentlyContinue
}

The CLI waits for a terminal provider state for up to four minutes and prints only the constrained decision. Timeout, malformed output, an unexpected recipient, or an ambiguous create response produces failed_closed or unknown; do not retry with a new idempotency key.

Safety boundaries

  • Default mode is preview-only and makes no network request.
  • The full phone number exists only in the private input and outbound CALL-E request; user-visible output is masked or omitted.
  • The API key is read from the process environment only and is sent only to the exact official CALL-E origin. Loopback HTTP is allowed solely for local tests.
  • Raw transcripts, free-form notes, source code, secrets, and provider error bodies are not printed.
  • A call reaches only the already-consenting project owner.
  • The result is stop, approve_after_review, or unknown. approve_after_review still requires the ordinary local approval flow.
  • This is not an emergency, authentication, payment, medical, legal, surveillance, or debt-collection workflow.

Competition evidence

Project structure

src/callback-gate.mjs  local validation, preview, and one-time authorization
src/calle-api.mjs      trusted-host API client, polling, and safe result summary
src/cli.mjs            preview or explicit one-time live-call command
test/                  no-network safety and API-contract tests
skill/                 reusable consent-first callback skill
JUDGE_GUIDE.md         reproducible preview-only judge path

Status and limitations

  • Local safety, API-contract, fail-closed, and privacy tests pass without a provider account.
  • A live CALL-E call still requires a separately configured API key and a consenting test recipient; neither is bundled.
  • The competition video must show one real, consented CALL-E call before final submission. A fixture-only preview will not be described as a live call.

License

MIT

About

Consent-first CALL-E callback gate for extreme-risk developer-agent safety escalations.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages