Skip to content

feat(proofshot): Harden isolated multi-session evidence - #7

Merged
alvarohulse merged 74 commits into
mainfrom
codex/multi-session-browser-evidence
Aug 16, 2026
Merged

alvarohulse merged 74 commits into
mainfrom
codex/multi-session-browser-evidence

Conversation

@alvarohulse

Copy link
Copy Markdown
Owner

Summary

  • Support concurrent proof sessions with durable registry-backed ownership, lifecycle serialization, explicit session selection, and recovery-safe cleanup.
  • Isolate the pinned agent-browser 0.34.0 runtime, contain browser commands and navigation, and keep raw browser/network evidence private while publishing sanitized summaries.
  • Reject synthetic or incomplete proof and unsafe output paths, strengthen artifact provenance, require Node 24, and update the CLI, skills, documentation, and CI runtimes.

Test plan

Build / Unit / Integration / E2E

  • npm ci
  • npm run build — build and DTS output passed under Node 24
  • node dist/bin/proofshot.js --help
  • node dist/bin/proofshot.js --version
  • npm pack --dry-run
  • npm test — 548/548 tests across 34 files
  • npm run test:ffmpeg — real FFmpeg integration passed

User testing

  • Under Node 24.19.0, verified agent-browser 0.34.0 JSON success/error handling, idle restart, two isolated sessions, recording finalization, text-only HAR capture, and exact process/socket/listener cleanup.
  • Verified the managed Doggo preflight reports ProofShot source c4dcf97, CLI SHA-256 804c33caca90cb000a78f9de6d8134554c48fa7a69ab5b76ba323513594e0be3, ffmpeg availability, a healthy doctor result, and an empty session inventory.
  • The supervised ProofShot browser canary remains intentionally human-gated and was not run unattended.

Revert risk

High: this changes core session lifecycle, process ownership, browser containment, evidence redaction, artifact creation, and the minimum Node runtime.

Notes

npm ci reported eight dependency vulnerabilities (3 moderate, 4 high, 1 critical). Their triage remains a separate follow-up.

alvarohulse and others added 30 commits August 15, 2026 20:31
Co-authored-by: Codex <noreply@openai.com>
Co-authored-by: Codex <noreply@openai.com>
Co-authored-by: Codex <noreply@openai.com>
Co-authored-by: Codex <noreply@openai.com>
Co-authored-by: Codex <noreply@openai.com>
Co-authored-by: Codex <noreply@openai.com>
Co-authored-by: Codex <noreply@openai.com>
Co-authored-by: Codex <noreply@openai.com>
Co-authored-by: Codex <noreply@openai.com>
Co-authored-by: Codex <noreply@openai.com>
Co-authored-by: Codex <noreply@openai.com>
Co-authored-by: Codex <noreply@openai.com>
Co-authored-by: Codex <noreply@openai.com>
Co-authored-by: Codex <noreply@openai.com>
Co-authored-by: Codex <noreply@openai.com>
Co-authored-by: Codex <noreply@openai.com>
Co-authored-by: Codex <noreply@openai.com>
Co-authored-by: Codex <noreply@openai.com>
Co-authored-by: Codex <noreply@openai.com>
Co-authored-by: Codex <noreply@openai.com>
Co-authored-by: Codex <noreply@openai.com>
Co-authored-by: Codex <noreply@openai.com>
Co-authored-by: Codex <noreply@openai.com>
Co-authored-by: Codex <noreply@openai.com>
Co-authored-by: Codex <noreply@openai.com>
Co-authored-by: Codex <noreply@openai.com>
Co-authored-by: Codex <noreply@openai.com>
Co-authored-by: Codex <noreply@openai.com>
Co-authored-by: Codex <noreply@openai.com>
Co-authored-by: Codex <noreply@openai.com>
alvarohulse and others added 25 commits August 16, 2026 01:25
Co-authored-by: Codex <noreply@openai.com>
Co-authored-by: Codex <noreply@openai.com>
Co-authored-by: Codex <noreply@openai.com>
Co-authored-by: Codex <noreply@openai.com>
Co-authored-by: Codex <noreply@openai.com>
Co-authored-by: Codex <noreply@openai.com>
Co-authored-by: Codex <noreply@openai.com>
Co-authored-by: Codex <noreply@openai.com>
Co-authored-by: Codex <noreply@openai.com>
Co-authored-by: Codex <noreply@openai.com>
Redact nested authentication routes and structured diagnostic secrets without losing safe sibling fields. Reject inherited global JSON output so ProofShot controls structured browser calls explicitly.

Co-authored-by: Codex <noreply@openai.com>
Consume full unquoted authorization fields and recognize escaped JSON key/value quotes so nested credentials cannot survive sanitization.

Co-authored-by: Codex <noreply@openai.com>
Co-authored-by: Codex <noreply@openai.com>
Consume complete unquoted and multiline sensitive fields so diagnostic continuations cannot escape canonical evidence redaction.

Co-authored-by: Codex <noreply@openai.com>
Treat indented diagnostic continuations as part of their sensitive field while preserving later unindented evidence.

Co-authored-by: Codex <noreply@openai.com>
Carry sensitive free-form fields across empty folded lines while preserving later unindented diagnostics.

Co-authored-by: Codex <noreply@openai.com>
Co-authored-by: Codex <noreply@openai.com>
Use locale-independent PowerShell listener queries on Windows and fail explicitly when Unix lsof inspection is unavailable. Preserve exact owned-tree cleanup and expose the prerequisite through doctor and user documentation.

Co-authored-by: Codex <noreply@openai.com>
Co-authored-by: Codex <noreply@openai.com>
Co-authored-by: Codex <noreply@openai.com>
Co-authored-by: Codex <noreply@openai.com>
Co-authored-by: Codex <noreply@openai.com>
Co-authored-by: Codex <noreply@openai.com>
Cover lowercase secretkey and secretkeys in the bounded redaction grammar across public evidence surfaces.

Co-authored-by: Codex <noreply@openai.com>
Co-authored-by: Codex <noreply@openai.com>
@alvarohulse alvarohulse added the revert-risk/high High blast radius or difficult rollback label Aug 16, 2026
@alvarohulse alvarohulse self-assigned this Aug 16, 2026
@alvarohulse
alvarohulse merged commit 31adcaf into main Aug 16, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

revert-risk/high High blast radius or difficult rollback

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant