Skip to content

Share assistant access with single-use invitation codes - #1735

Merged
frahlg merged 2 commits into
masterfrom
codex/mcp-shared-access
Oct 18, 2026
Merged

frahlg merged 2 commits into
masterfrom
codex/mcp-shared-access

Conversation

@frahlg

@frahlg frahlg commented Oct 18, 2026 •

Copy link
Copy Markdown
Member

An owner can share a six-character code such as K7M-4PX with another person's assistant. The recipient keeps its own key and receives a separate connection the owner can remove. The code works once for at most ten minutes; access has its own expiry. Technical reads start on, while setup and control start off.

Core stores the strong invitation's verifier and durable receipt. Noise must prove the recipient's key before Core consumes it and grants only the intersection of the invitation and client request. Recheck cancellation, owner state, expiry and signature at that point. Lost replies retry the same request; simultaneous claims cannot create two grants or revive revoked access. Agents cannot create sharing invitations merely because they may edit setup.

Add the owner view to Access and the shared wire vector. The short code maps to a strong invitation through Cloud; neither a code nor Cloud can grant owner rights. A Cloud restart can republish the same invitation without creating another Core grant. Explain who can use the code, when it ends and how to remove the resulting connection.

Pairs: srcfl/ftw-cloud#38, srcfl/ftw-webapp#100 and srcfl/ftw-app#95. Base setup: #1732. Merge the canonical registry copy immediately after Core, then coordinate the common next beta before Cloud deployment.

Validation: full make verify passes on head 229e0c1, including the final setup authority checks and merged sessions fix. Affected-package race suites, tunnel proof/claim tests, cancellation/retry/expiry cases, JavaScript Access tests and shared vectors pass. Registry copies match byte for byte. The owner approved the rendered Core sharing view; native Swift/JVM tests, build and light/dark/largest-text review pass. No real recipient, physical hardware or TestFlight release is claimed.

Contract-pair: srcfl/ftw-webapp@codex/mcp-shared-access

Pending invitations now cancel permanently in the same saved snapshot when their owner loses access. Restoring the same phone cannot revive a code, including after restart or a proof already in progress. Every local creation reserves the current Cloud home before binding the verifier. The affected race tests pass for both regressions.

@chatgpt-codex-connector

Copy link
Copy Markdown

Summary

  • Added API coverage confirming that invitation cancellation is available from the local home network while forwarded app sessions remain blocked from the local-only endpoint. go/internal/api/api_agent_invites_test.goL66-L83
  • Verified that cancelling an already-claimed invitation preserves and returns its durable claimed receipt rather than altering or reviving access. go/internal/api/api_agent_invites_test.goL85-L87
  • Committed the follow-up as 8acb696 (Test invitation cancellation access gate) and created the PR metadata titled “Test shared-access invitation cancellation gating.”

Testing

  • ✅ cd go && go test ./internal/api -run 'TestInvitation(Creation|Cancellation)'
  • ✅ cd go && go test ./internal/appenroll ./internal/appproto ./internal/appuplink ./internal/cloudlink
  • ✅ cd go/protocol && go test ./...
  • ✅ node --test web/settings/tabs/access-invitations-flow.test.mjs
  • ✅ git diff --check
  • ⚠️ make verify (the invitation-related packages passed, but the full suite stopped at the pre-existing TestBeta4AuditUpgradePreservesForecastLearning fixture fingerprint mismatch after fetching the bundled drivers)
  • ⚠️ npm test (this environment’s Node runtime did not resolve the quoted web/**/*.test.mjs glob; the relevant Access test was therefore executed directly and passed)

View task →

@frahlg
frahlg force-pushed the codex/mcp-setup-contract branch from c3c3711 to 0c66939 Compare October 18, 2026 17:32
@frahlg
frahlg force-pushed the codex/mcp-shared-access branch 2 times, most recently from a4ce1d9 to 97012fd Compare October 18, 2026 17:56
@frahlg
frahlg force-pushed the codex/mcp-setup-contract branch from 0c66939 to 1ec36be Compare October 18, 2026 17:56
@frahlg
frahlg marked this pull request as ready for review October 18, 2026 18:04
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 18, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-18T18:09:02.685013Z 97012fd Draft marked ready
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@frahlg
frahlg force-pushed the codex/mcp-setup-contract branch from 1ec36be to af2b3b2 Compare October 18, 2026 18:05
@frahlg
frahlg force-pushed the codex/mcp-shared-access branch from 97012fd to 9f9a460 Compare October 18, 2026 18:06

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 97012fd509

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread go/internal/appenroll/agent_invites.go
Comment thread go/internal/api/api_agent_invites.go Outdated
@frahlg
frahlg force-pushed the codex/mcp-shared-access branch from 9f9a460 to 499d5de Compare October 18, 2026 18:12
@frahlg
frahlg changed the base branch from codex/mcp-setup-contract to master October 18, 2026 18:20
@frahlg
frahlg merged commit 8fab5b6 into master Oct 18, 2026
30 of 32 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant