Skip to content

Overseer: namespace-scope the event/inbox substrate (multi-tenant) #107

Description

@heavygee

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:

  1. Persist namespace (or equivalent tenant key) on Overseer events + inbox items at write time.
  2. Thread authenticated namespace from hub routes into OverseerEntity accessors.
  3. Fail closed: refuse cross-namespace session resolve / relay / disposition.
  4. 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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions