Problem
Codex (and AGENTS.md) correctly flag that Overseer read/write tools resolve sessions and events without threading the authenticated CLI namespace. On a multi-CLI_API_TOKEN hub, an operator authenticated to namespace A can target another namespace's session by full ID / unique prefix (relay, state reads, etc.).
This shows up as a repeated P1 on every Overseer PR (#98–#106 stack) because system_events / inbox rows have no namespace column — there is nothing honest to filter on today.
Goal
One substrate epic, not per-PR cosmetic namespace args:
- Persist namespace (or equivalent tenant key) on Overseer events + inbox items at write time.
- Thread authenticated namespace from hub routes into
OverseerEntity accessors.
- Fail closed: refuse cross-namespace session resolve / relay / disposition.
- Migration / backfill plan for existing rows (default namespace vs unknown).
Non-goals
- Fake per-PR filters that look namespaced but still scan global tables.
- Blocking the current converse/relay dogfood stack on this alone (single-tenant operator hub is the current dogfood).
Origin
Repeated Codex P1 across Overseer stack PRs; latest callout on #104 overseerEntity relay target resolution.
Kill criteria
Ship is done when a session id that exists only in namespace B cannot be resolved or relayed by a namespace-A converse token, with tests.
Problem
Codex (and AGENTS.md) correctly flag that Overseer read/write tools resolve sessions and events without threading the authenticated CLI namespace. On a multi-
CLI_API_TOKENhub, an operator authenticated to namespace A can target another namespace's session by full ID / unique prefix (relay, state reads, etc.).This shows up as a repeated P1 on every Overseer PR (#98–#106 stack) because
system_events/ inbox rows have no namespace column — there is nothing honest to filter on today.Goal
One substrate epic, not per-PR cosmetic
namespaceargs:OverseerEntityaccessors.Non-goals
Origin
Repeated Codex P1 across Overseer stack PRs; latest callout on #104
overseerEntityrelay target resolution.Kill criteria
Ship is done when a session id that exists only in namespace B cannot be resolved or relayed by a namespace-A converse token, with tests.