Skip to content

P0: Mac connector can be actively granted to multiple customer scopes without explicit selection #686

Description

@100yenadmin

Problem

One installed Mac connector identity can currently remain actively granted to more than one customer/VM scope. Local connector state then cannot safely determine which customer route the signed-in Workbench user or agent intends.

Current sanitized reproduction on the prepared release Mac:

  • 52 stored device rows total;
  • 44 historical rows with no hardware-derived identifier;
  • 8 rows with an identifier;
  • exactly 2 rows match the installed Mac's hardware-derived connector identity;
  • both matching rows are active;
  • both have active grants correlated to the current local connector token and private connector host;
  • the matches belong to two distinct customer scopes.

Selecting the newest row would be unsafe. One route passing must not imply the other route is ready.

Product behavior required

  • If exactly one active correlated customer/grant exists, select it.
  • If more than one exists, report multiple_active_customer_grants and do not claim connected.
  • Workbench must bind Mac control to the authenticated customer/VM scope or require an explicit visible choice when multiple legitimate scopes exist.
  • Agent tools must receive the selected customer/grant in session context and fail closed on missing, stale, mismatched, or ambiguous scope.
  • The Mac & iPhone surface must show which connections are active and let the authorized user switch or revoke them without exposing secrets or infrastructure identifiers.

Acceptance criteria

  • Regression fixture covers the same hardware identity with two active customers and active grants.
  • UI readiness, broker authority, support smoke, and agent tools agree on the explicit selected scope.
  • No global newest-row heuristic crosses customer boundaries.
  • Pending/revoked rows remain historical and cannot win selection.
  • Stop/revoke, replacement, expiry, offline transition, ACL denial, and kill switch invalidate the selected route immediately.
  • Evidence contains safe booleans/reason codes only; no customer IDs, connector tokens, URLs, addresses, or raw logs.
  • Existing single-customer stale-row behavior from P0: stale pending Mac connector rows can confuse active grant selection #656 remains intact.

Dependencies

Proof boundary

Discovery and route smoke were read-only. No customer, device, grant, connector, network, VM, or Matt state changed.

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:brokerevaOS broker/session/auth integrationarea:native-companionNative macOS companion boundarybugSomething isn't workingevaosevaOS public beta R&D workkind:integrationIntegration implementation issuepriority:P0Critical customer/runtime blocker requiring immediate attentionpublic-betaBlocks or contributes to the public beta gateready-for-agentIssue has enough handoff detail for an agent to startrelease-train:runtime-reliabilityCross-version Workbench/runtime reliability release trainrisk:securitySecurity, auth, secrets, permission risk

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions