Skip to content

[agent] feat: add secure handoffs and transactional secret updates - #7

Merged
alexng353 merged 12 commits into
mainfrom
fix/atomic-secret-writes
Sep 24, 2026
Merged

alexng353 merged 12 commits into
mainfrom
fix/atomic-secret-writes

Conversation

@alexng353

@alexng353 alexng353 commented Sep 24, 2026 •

Copy link
Copy Markdown
Member

[agent] Add mutual single-use friend links and a bounded encrypted-message mailbox, with signed redemption receipts, participant-only access, retry-safe sends, expiration and per-party deletion.

  • Close variable ownership bypasses and make replacements atomic. Validate invite authority and membership changes transactionally.
  • Run checksum-preserving database upgrades at startup, including populated legacy-invite databases. Build without database access and run as a nonroot user.
  • Exercise authorization, concurrency, rollback, expiry and migration paths against disposable PostgreSQL; verify the real CLI messaging/import flow and read-only production container startup.

Project secrets retain their existing server-directory trust model. Standalone messages add signed payloads and locally pinned identities; this does not retrofit signatures onto legacy project variables.

Validation: 36 PostgreSQL tests passed; offline Clippy and the locked production Docker build passed. The nonroot read-only production image passed the real three-profile CLI social flow. Full-codebase and feature reviews used OpenAI and Claude, followed by one scoped fix review. All commits are signed and CI is green.

Deferred: shared-project variables retain unsigned legacy payloads and server-directory trust. Ordinary writes and remove-user rewraps still have legacy membership-race limitations; conditional invitations/add-user commits now fail closed on stale state. A full membership/write protocol redesign is separate work.

Co-Authored-By: GPT-6 (OpenAI) noreply@openai.com

alexng353 and others added 12 commits September 24, 2026 04:25
Co-Authored-By: GPT-6 (OpenAI) <noreply@openai.com>
Add transactional single-use friend links with signed redemption receipts, friend-only ciphertext mailboxes, idempotent sends, per-party deletion, and bounded quotas. Cover concurrency and authorization against disposable PostgreSQL.

Co-Authored-By: GPT-6 (OpenAI) <noreply@openai.com>
Run embedded migrations before serving, preserve populated legacy invitations as expired records through an audited compatibility replay, and verify offline query metadata in pull request CI.

Co-Authored-By: GPT-6 (OpenAI) <noreply@openai.com>
Co-Authored-By: GPT-6 Astra (OpenAI) <noreply@openai.com>
Keep normal API startup compatible with nonroot read-only containers. Export a schema file only when ENVX_OPENAPI_OUTPUT names a destination; continue serving the schema over HTTP.

Co-Authored-By: GPT-6 (OpenAI) <noreply@openai.com>
Count canonical verified key snapshots against mailbox storage and erase them with expired or fully deleted ciphertext. Return keys only on message detail. Paginate links and messages newest first using owned timestamp-and-ID cursors; cover ties, unrelated cursors, padded armor, snapshot quotas and erasure.

Co-Authored-By: GPT-6 (OpenAI) <noreply@openai.com>
Co-Authored-By: GPT-6 (OpenAI) <noreply@openai.com>
…nal and atomic

Co-Authored-By: GPT-6 (OpenAI) <noreply@openai.com>
Co-Authored-By: GPT-6 (OpenAI) <noreply@openai.com>
Co-Authored-By: GPT-6 (OpenAI) <noreply@openai.com>
…rsing

Co-Authored-By: GPT-6 Astra (OpenAI) <noreply@openai.com>
Co-Authored-By: GPT-6 Astra (OpenAI) <noreply@openai.com>
@alexng353
alexng353 merged commit 08b7ab0 into main Sep 24, 2026
1 check passed
@railway-app
railway-app Bot temporarily deployed to envx / production September 24, 2026 12:07 Inactive
@alexng353
alexng353 deleted the fix/atomic-secret-writes branch September 24, 2026 12:11

This branch was previously deployed

1 inactive deployment
envx / production — 08b7ab09 Deployed Sep 24, 2026 by railway-app[bot]
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