0027: No invocation-token source allowlist

August 19, 2026 · View on GitHub

  • Status: accepted
  • Date: 2026-08-19

Context

0026 kept a per-token source allowlist after tokens became package-owned. The check was: omit or null source always passes; a named source must be on sources_json. Empty lists rejected every named label. That is not a client allowlist — a stolen bearer that omits source still works — and the form field was hard to explain.

Production tokens all stored one caller label (youtube-websub-proxy, discord, raycast, and the rest). Callers already send that string on the request for logs. The token column added a second, weaker copy of the same name.

Decision

Invocation tokens do not store or enforce a source allowlist. Request JSON source remains an optional label for logs. Export allowlists stay. The 0026 package-ownership decision is unchanged.

Consequences

0019-drop-invocation-token-sources.sql drops sources_json. Token create and edit forms, MCP token metadata, and HTTP auth no longer mention allowed sources. Agents may still send source on invoke; it is not required and does not fail the call. Revisit only if a real caller-identity check is added that cannot be omitted.