Skip to content

fix: release Windows ACL temp-path memos - #840

Closed
Ingwannu wants to merge 1 commit into
devfrom
agent/fix-windows-acl-memo-leak
Closed

fix: release Windows ACL temp-path memos#840
Ingwannu wants to merge 1 commit into
devfrom
agent/fix-windows-acl-memo-leak

Conversation

@Ingwannu

@Ingwannu Ingwannu commented Aug 1, 2026

Copy link
Copy Markdown
Owner

Summary

  • release successful and timed-out Windows ACL memos once an ephemeral file is proven absent
  • key atomic-write timeouts by the stable destination so unique temp names cannot accumulate
  • cover config/response state, OpenAI tier backups, management tokens, and tray replacements
  • retain memo state when a hardened residual temp remains on disk

Part of #820. This intentionally extracts the confirmed Windows leak into a focused change instead of coupling it to #829.

Verification

  • bun run typecheck
  • bun run privacy:scan
  • bun test tests/windows-secret-acl.test.ts tests/config.test.ts tests/server-management-auth.test.ts tests/windows-tray.test.ts (167 pass)
  • full suite: 6427 pass / 6 skip; 5 unrelated GUI test import errors because this checkout lacks the GUI React dependencies (react, react/jsx-dev-runtime)

Compatibility

Stable destination/directory memo behavior and fail-closed ACL policy are unchanged. Only one-shot temp path entries are released after rename/unlink or proven ENOENT.

@coderabbitai

coderabbitai Bot commented Aug 1, 2026

Copy link
Copy Markdown

Important

Review skipped

Draft detected.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: ba90a6fd-d1a1-4dda-8456-3b3d7976d55f

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Comment @coderabbitai help to get the list of available commands.

@lidge-jun

Copy link
Copy Markdown
Owner

Maintainer triage: this is a valuable focused fix. It removes the confirmed Windows process-lifetime temp-path memo leak while preserving fail-closed handling when a residual file remains, and the focused coverage is broad across the affected write paths.

The branch currently conflicts with dev, so it needs a rebase. After that, an independent review from someone other than the author is required before landing. We are tracking this under #820 for the next cycle.

@lidge-jun

Copy link
Copy Markdown
Owner

Superseded by #892, which implements this defect's fix natively on top of the wave-1 retained-state framework (the PR's shape was used as a reference; see the PR description in #892 for the defect-specific deltas, including where the framework already covered part of it). Thank you for the contribution — the analysis in this PR drove the fix.

@lidge-jun lidge-jun closed this Aug 2, 2026
olddonkey pushed a commit to olddonkey/opencodex that referenced this pull request Aug 2, 2026
Campaign preparation (docs-only): five units under devlog/_plan/260802_wtN_*
with 000 research + 010 implementation roadmaps, claim ledgers verified by a
lunasearch fan-out (Anthropic 1M windows, Copilot mixed-wire, DeepSeek
service_tier, WHATWG extension origins, POSIX rename-over-symlink).

wt1 update-path: PR lidge-jun#871, issue lidge-jun#879 (star-prompt deferral leakage), lidge-jun#557 optional
wt2 zero-leak: PRs lidge-jun#840 lidge-jun#841 lidge-jun#843 lidge-jun#844 lidge-jun#845 lidge-jun#847 (tracker lidge-jun#820)
wt3 provider-wire: PRs lidge-jun#746 lidge-jun#860 lidge-jun#839/lidge-jun#854, issue lidge-jun#875 triage, lidge-jun#616/lidge-jun#837 optional
wt4 server-config: PRs lidge-jun#850 (CORS origin confusion), lidge-jun#869 (symlink destruction)
wt5 windows-service: PRs lidge-jun#868, lidge-jun#861 (issue lidge-jun#848)
Wibias pushed a commit to Wibias/opencodex that referenced this pull request Aug 3, 2026
… bounds

Three explorer passes found wave-1 landings already on dev (77243d9
framework, d1408b9 continuation cap+spill, 034d320 cache caps,
a616078 translator budgets), so the campaign narrows to refinements:
lidge-jun#841 admission boundary (direct-spill oversized, bounded snapshot read,
bounded replay), lidge-jun#847 collector per-call scope + mandatory budget + 502
normalization, lidge-jun#844 incremental frames + typed partial-EOF, lidge-jun#845 NOOP
(superseded), lidge-jun#843 fixed-size SHA-256 key identities, lidge-jun#840 ACL
timeout-memo release + destination keying.
Wibias pushed a commit to Wibias/opencodex that referenced this pull request Aug 3, 2026
…tion

The sync atomic writer hardened each unique temp without a destination
memo key, so one ACL timeout minted a permanent required:<unique-temp>
memo per write; forgetHardenedSecretPath only cleared the success set.
forgetEphemeralSecretPath now releases the success memo and both
timeout namespaces for a proven-absent temp (rename, unlink, ENOENT),
wired through every atomic writer, the OpenAI tier backups, response
spills, tray replacements, and management tokens. Sync config writes,
tray, management-auth, and prompt-journal temps key their timeouts by
the stable destination, matching the async writer — destination memos
are intentional anti-restall state and are never touched by the
ephemeral release. Refines lidge-jun#840.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug Something isn't working

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants