Skip to content

ACP: Windows process-tree support (job objects / taskkill, win32 branching, safe-env keys) — dropped from the #2599 split #2805

Open

Description

@lsm

Context

The PR #2599 split (ACP/Devin provider integration, landed as the 10-PR stack ending with #2795) deliberately shipped POSIX-only process management. Windows support was the most frequently dropped item across the slice PRs — called out in #2689, #2698, #2699, and #2711 (the 8/10 slice, landed as #2783/#2786/#2790/#2792). This issue tracks everything needed to bring the ACP runtime up on Windows.

Current state (verified on dev @ 6e971c5)

  • packages/daemon/src/lib/acp/acp-process-tree.ts exists but is POSIX process-group only. The only win32 awareness anywhere is the probe in acpProcessGroupAlive (process.kill(platform === 'win32' ? pid : -pid, 0)); termination is process.kill(-pid, ...) group signaling, which does not exist on Windows.
  • acp-transport.ts already spawns with detached: process.platform !== 'win32' and windowsHide: true, so the transport side is Windows-ready in shape, but the kill path is not.
  • The daemon-side safe-env allowlist in acp-command.ts retains the Windows keys (USERPROFILE, APPDATA, LOCALAPPDATA, TEMP, TMP, SystemRoot, SystemDrive, PATHEXT, COMSPEC).

Work items

  1. acp-process-tree-windows.ts — restore the Windows process-tree owner (job-object and/or taskkill FFI path) dropped from feat(daemon): ACP terminal manager with POSIX process-tree cleanup #2699, plus the win32 branching in acp-process-tree.ts and acp-terminal-manager.ts (spawn/escalation paths).
  2. win32 case-insensitive env-key normalization in buildAcpProcessEnv (dropped from the 8/10 slice as "speculative portability" while cleanup was POSIX-only — it stops being speculative once item 1 lands).
  3. Windows path-separator parsing tests (shared + daemon) dropped from feat(shared): ACP command spec parsing and identity #2689.
  4. Platform-conditional spawn/escalation test assertions in the terminal-manager suite were replaced with POSIX-only ones; restore the platform matrix.
  5. Confirm the shared packages/shared/src/acp/ command parsing handles Windows path separators in behavior, not just tests.

Origin

Related: #2782 (ACP security hardening track). Parent: #2599.

Activity

  1. added
    parked-not-dogfoodCorrect work, parked until the daemon is dogfoodable: gates, policy, CI and test hygiene
    on Sep 19, 2026
  2. lsm commented on Sep 19, 2026

    @lsm
    OwnerAuthor

    Parked under #4877 (parked-not-dogfood) by the 2026-09-19 correctness pass.

    The filter: does a person or an agent get a wrong answer, lose data, or reach a state with no way out? If yes it is correctness and stays on the main path; if it only enforces, tidies, documents or restructures, it parks until the daemon is dogfoodable.

    ACP is not on the dogfood path; this is platform or hardening work on it.

    Not rejected and not closed — the analysis here still stands, and this set gets picked up in one motion once dogfooding is unblocked. Reopen the priority by removing the label if you think the filter was misapplied.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requestparked-not-dogfoodCorrect work, parked until the daemon is dogfoodable: gates, policy, CI and test hygiene

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions