Skip to content

Authorize web memory by linked identities #1636

Description

@sentry-junior

Web turns should use the same memory permission model as the dashboard memory page: access follows the authenticated person through linked identities, not only the current surface Actor and Source.

Current behavior

  • Web turns resolve a verified person, then reduce that person to a WebActor before agent execution.
  • Memory recall and memory tools derive scopes from that Actor and Source only (junior:<email> plus the current web conversation).
  • The dashboard memory page already authorizes from the canonical User and every linked identity, including public Slack workspace scopes (slack:<teamId>).

Gap

  • A verified Slack workspace identity is enough proof to read that workspace's public memories on the memory page, but not during a web conversation turn.
  • The same person therefore sees different memory authority depending on surface, even though identity linkage already exists.
  • This is a missing permission bridge, not missing memory invocation.

Permission model

  • Memory read access is person-scoped.
  • Public workspace memory is granted by a linked Slack identity for that workspace.
  • Private conversation memory stays conversation-scoped.
  • Surface (Slack vs web) must not invent or drop authority the person already has.

Evidence: packages/junior-memory/src/scope.ts, packages/junior-memory/src/personal.ts, packages/junior-plugin-api/src/prompt.ts.

Requested by David Cramer.

--

View Junior Session [Sentry]

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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