Skip to content

fix(server): strip desktop launcher environment before providers start - #1766

Merged
donjor merged 1 commit into
hyprwsfrom
fix/1615-strip-desktop-env
Oct 16, 2026
Merged

donjor merged 1 commit into
hyprwsfrom
fix/1615-strip-desktop-env

Conversation

@donjor-agent

@donjor-agent donjor-agent Bot commented Oct 16, 2026 •

Copy link
Copy Markdown

🤖 claude/anthropic claude-opus-5-5 (high) · host
with peer-worker pi/openai gpt-6.1-sol (medium)

Problem

Provider children inherit desktop placement and CDP settings from the development launcher.
Closes #1615 (Closes #1615).

Change

Scrub every T3CODE_DESKTOP_* key at the existing server-start environment boundary, alongside inherited session IDs.
This covers adapters that re-inherit process.env and in-process SDKs; Electron retains its separate launcher environment.
Rename the helper and update its one startup call and existing test.

for (const key of Object.keys(environment)) {
  if (key.toUpperCase().startsWith("T3CODE_DESKTOP_")) {
    delete environment[key];
  }
}

Scope and approval

Host-approved, focused fix for the existing launcher leak; no UI, wire contract, or provider-specific implementation.
The initial per-provider environment patch was removed.

Claim was skipped at the host's direction after this refusal; the issue remains unassigned and untriaged:

✗ Error: RSI-Software/t3code-hyprws#1615 is parentless and still Untriaged 📥, and a claim moves it off the entry Status, so Standalone 📍 would be written by nobody's judgement.
Review the open trackers, projects, and slices with ghb work, then take one of the two moves:
  home it   ghb issue edit RSI-Software/t3code-hyprws#1615 --parent ISSUE --no-relationship   — use the truthful relationship flag
  judge it  ghb issue claim RSI-Software/t3code-hyprws#1615 --standalone    — records independence from the other open work

Close conditions

  • Children: no T3CODE_DESKTOP_* values

Verification

  • Focused tests: 17 passed, 0 failed

vp test run apps/server/src/provider/providerSessionEnvironment.fork.test.ts apps/server/src/provider/providerSessionEnvironment.test.ts → exit 0

The extended test covers current launcher keys, a future key with an empty value, case-insensitive matching, inherited session IDs, and preservation of PATH, credentials, and the non-prefix T3CODE_DESKTOP key.

  • Targeted typecheck: both packages passed

vp run --filter @t3tools/provider-core --filter t3 typecheck → exit 0

  • Targeted lint and formatting passed
  • Server production bundle passed

vp run --filter t3 build:bundle → exit 0

  • Fork gate: 762 script tests passed

vp run fork:ci → exit 0

Grounding

Claim: with T3CODE_DESKTOP_* set on the server, its terminal and provider children see none.

  • Build: local ground/wave1 e81b07cb04
  • Contents: heads of three wave-1 PRs
  • Server env: two T3CODE_DESKTOP_* probe keys
  • Server environ: both keys present
  • Plain shell: PPID is the server; 0 keys
  • Claude turn: Bash env reports count=0 none
  • Provider process environ: 0 keys

proof-1766.png

k1-crop.png

Not grounded: Electron desktop placement and CDP debugging.
No server code reads T3CODE_DESKTOP_*; Electron keeps its own launcher environment.

Model/harness: gpt-6.1-sol / Pi.

Fork trailers

Fork-Domain: upstream-fixes
Fork-Tier: bugfix
Fork-Upstreamable: no

Fork-Domain: upstream-fixes
Fork-Tier: bugfix
Fork-Upstreamable: no
@rsi-software-agent rsi-software-agent Bot added the size:S 10-29 effective changed lines (test files excluded in mixed PRs). label Oct 16, 2026
@donjor
donjor merged commit a4b076e into hyprws Oct 16, 2026
@donjor
donjor deleted the fix/1615-strip-desktop-env branch October 16, 2026 20:56
donjor added a commit that referenced this pull request Oct 18, 2026
#1766)

## Problem

Provider children inherit desktop placement and CDP settings from the development launcher.
Closes #1615 (`Closes #1615`).

## Change

Scrub every `T3CODE_DESKTOP_*` key at the existing server-start environment boundary, alongside inherited session IDs.
This covers adapters that re-inherit `process.env` and in-process SDKs; Electron retains its separate launcher environment.
Rename the helper and update its one startup call and existing test.

```ts
for (const key of Object.keys(environment)) {
  if (key.toUpperCase().startsWith("T3CODE_DESKTOP_")) {
    delete environment[key];
  }
}
```

## Scope and approval

Host-approved, focused fix for the existing launcher leak; no UI, wire contract, or provider-specific implementation.
The initial per-provider environment patch was removed.

Claim was skipped at the host's direction after this refusal; the issue remains unassigned and untriaged:

```text
✗ Error: #1615 is parentless and still Untriaged 📥, and a claim moves it off the entry Status, so Standalone 📍 would be written by nobody's judgement.
Review the open trackers, projects, and slices with ghb work, then take one of the two moves:
  home it   ghb issue edit #1615 --parent ISSUE --no-relationship   — use the truthful relationship flag
  judge it  ghb issue claim #1615 --standalone    — records independence from the other open work
```

### Close conditions

- [x] **Children:** no `T3CODE_DESKTOP_*` values

## Verification

- [x] Focused tests: 17 passed, 0 failed

`vp test run apps/server/src/provider/providerSessionEnvironment.fork.test.ts apps/server/src/provider/providerSessionEnvironment.test.ts` → exit 0

The extended test covers current launcher keys, a future key with an empty value, case-insensitive matching, inherited session IDs, and preservation of PATH, credentials, and the non-prefix `T3CODE_DESKTOP` key.

- [x] Targeted typecheck: both packages passed

`vp run --filter @t3tools/provider-core --filter t3 typecheck` → exit 0

- [x] Targeted lint and formatting passed
- [x] Server production bundle passed

`vp run --filter t3 build:bundle` → exit 0

- [x] Fork gate: 762 script tests passed

`vp run fork:ci` → exit 0

## Grounding

**Claim:** with `T3CODE_DESKTOP_*` set on the server, its terminal and provider children see none.

- **Build:** local `ground/wave1` `e81b07cb04`
- **Contents:** heads of three wave-1 PRs
- **Server env:** two `T3CODE_DESKTOP_*` probe keys
- **Server environ:** both keys present
- **Plain shell:** `PPID` is the server; 0 keys
- **Claude turn:** Bash `env` reports `count=0 none`
- **Provider process environ:** 0 keys

![proof-1766.png](https://github.com/user-attachments/assets/2081b493-df3f-423c-a399-e5255a864bd7)

![k1-crop.png](https://github.com/user-attachments/assets/398000c6-81fb-4ae6-a686-f5b931e605fc)

**Not grounded:** Electron desktop placement and CDP debugging.
No server code reads `T3CODE_DESKTOP_*`; Electron keeps its own launcher environment.

Model/harness: gpt-6.1-sol / Pi.

## Fork trailers

Fork-Domain: upstream-fixes
Fork-Tier: bugfix
Fork-Upstreamable: no
Co-authored-by: donjor <[email protected]>
donjor added a commit that referenced this pull request Oct 18, 2026
#1766)

## Problem

Provider children inherit desktop placement and CDP settings from the development launcher.
Closes #1615 (`Closes #1615`).

## Change

Scrub every `T3CODE_DESKTOP_*` key at the existing server-start environment boundary, alongside inherited session IDs.
This covers adapters that re-inherit `process.env` and in-process SDKs; Electron retains its separate launcher environment.
Rename the helper and update its one startup call and existing test.

```ts
for (const key of Object.keys(environment)) {
  if (key.toUpperCase().startsWith("T3CODE_DESKTOP_")) {
    delete environment[key];
  }
}
```

## Scope and approval

Host-approved, focused fix for the existing launcher leak; no UI, wire contract, or provider-specific implementation.
The initial per-provider environment patch was removed.

Claim was skipped at the host's direction after this refusal; the issue remains unassigned and untriaged:

```text
✗ Error: #1615 is parentless and still Untriaged 📥, and a claim moves it off the entry Status, so Standalone 📍 would be written by nobody's judgement.
Review the open trackers, projects, and slices with ghb work, then take one of the two moves:
  home it   ghb issue edit #1615 --parent ISSUE --no-relationship   — use the truthful relationship flag
  judge it  ghb issue claim #1615 --standalone    — records independence from the other open work
```

### Close conditions

- [x] **Children:** no `T3CODE_DESKTOP_*` values

## Verification

- [x] Focused tests: 17 passed, 0 failed

`vp test run apps/server/src/provider/providerSessionEnvironment.fork.test.ts apps/server/src/provider/providerSessionEnvironment.test.ts` → exit 0

The extended test covers current launcher keys, a future key with an empty value, case-insensitive matching, inherited session IDs, and preservation of PATH, credentials, and the non-prefix `T3CODE_DESKTOP` key.

- [x] Targeted typecheck: both packages passed

`vp run --filter @t3tools/provider-core --filter t3 typecheck` → exit 0

- [x] Targeted lint and formatting passed
- [x] Server production bundle passed

`vp run --filter t3 build:bundle` → exit 0

- [x] Fork gate: 762 script tests passed

`vp run fork:ci` → exit 0

## Grounding

**Claim:** with `T3CODE_DESKTOP_*` set on the server, its terminal and provider children see none.

- **Build:** local `ground/wave1` `e81b07cb04`
- **Contents:** heads of three wave-1 PRs
- **Server env:** two `T3CODE_DESKTOP_*` probe keys
- **Server environ:** both keys present
- **Plain shell:** `PPID` is the server; 0 keys
- **Claude turn:** Bash `env` reports `count=0 none`
- **Provider process environ:** 0 keys

![proof-1766.png](https://github.com/user-attachments/assets/2081b493-df3f-423c-a399-e5255a864bd7)

![k1-crop.png](https://github.com/user-attachments/assets/398000c6-81fb-4ae6-a686-f5b931e605fc)

**Not grounded:** Electron desktop placement and CDP debugging.
No server code reads `T3CODE_DESKTOP_*`; Electron keeps its own launcher environment.

Model/harness: gpt-6.1-sol / Pi.

## Fork trailers

Fork-Domain: upstream-fixes
Fork-Tier: bugfix
Fork-Upstreamable: no
Co-authored-by: donjor <[email protected]>
donjor added a commit that referenced this pull request Oct 18, 2026
#1766)

## Problem

Provider children inherit desktop placement and CDP settings from the development launcher.
Closes #1615 (`Closes #1615`).

## Change

Scrub every `T3CODE_DESKTOP_*` key at the existing server-start environment boundary, alongside inherited session IDs.
This covers adapters that re-inherit `process.env` and in-process SDKs; Electron retains its separate launcher environment.
Rename the helper and update its one startup call and existing test.

```ts
for (const key of Object.keys(environment)) {
  if (key.toUpperCase().startsWith("T3CODE_DESKTOP_")) {
    delete environment[key];
  }
}
```

## Scope and approval

Host-approved, focused fix for the existing launcher leak; no UI, wire contract, or provider-specific implementation.
The initial per-provider environment patch was removed.

Claim was skipped at the host's direction after this refusal; the issue remains unassigned and untriaged:

```text
✗ Error: #1615 is parentless and still Untriaged 📥, and a claim moves it off the entry Status, so Standalone 📍 would be written by nobody's judgement.
Review the open trackers, projects, and slices with ghb work, then take one of the two moves:
  home it   ghb issue edit #1615 --parent ISSUE --no-relationship   — use the truthful relationship flag
  judge it  ghb issue claim #1615 --standalone    — records independence from the other open work
```

### Close conditions

- [x] **Children:** no `T3CODE_DESKTOP_*` values

## Verification

- [x] Focused tests: 17 passed, 0 failed

`vp test run apps/server/src/provider/providerSessionEnvironment.fork.test.ts apps/server/src/provider/providerSessionEnvironment.test.ts` → exit 0

The extended test covers current launcher keys, a future key with an empty value, case-insensitive matching, inherited session IDs, and preservation of PATH, credentials, and the non-prefix `T3CODE_DESKTOP` key.

- [x] Targeted typecheck: both packages passed

`vp run --filter @t3tools/provider-core --filter t3 typecheck` → exit 0

- [x] Targeted lint and formatting passed
- [x] Server production bundle passed

`vp run --filter t3 build:bundle` → exit 0

- [x] Fork gate: 762 script tests passed

`vp run fork:ci` → exit 0

## Grounding

**Claim:** with `T3CODE_DESKTOP_*` set on the server, its terminal and provider children see none.

- **Build:** local `ground/wave1` `e81b07cb04`
- **Contents:** heads of three wave-1 PRs
- **Server env:** two `T3CODE_DESKTOP_*` probe keys
- **Server environ:** both keys present
- **Plain shell:** `PPID` is the server; 0 keys
- **Claude turn:** Bash `env` reports `count=0 none`
- **Provider process environ:** 0 keys

![proof-1766.png](https://github.com/user-attachments/assets/2081b493-df3f-423c-a399-e5255a864bd7)

![k1-crop.png](https://github.com/user-attachments/assets/398000c6-81fb-4ae6-a686-f5b931e605fc)

**Not grounded:** Electron desktop placement and CDP debugging.
No server code reads `T3CODE_DESKTOP_*`; Electron keeps its own launcher environment.

Model/harness: gpt-6.1-sol / Pi.

## Fork trailers

Fork-Domain: upstream-fixes
Fork-Tier: bugfix
Fork-Upstreamable: no
Co-authored-by: donjor <[email protected]>
donjor added a commit that referenced this pull request Oct 19, 2026
#1766)

## Problem

Provider children inherit desktop placement and CDP settings from the development launcher.
Closes #1615 (`Closes #1615`).

## Change

Scrub every `T3CODE_DESKTOP_*` key at the existing server-start environment boundary, alongside inherited session IDs.
This covers adapters that re-inherit `process.env` and in-process SDKs; Electron retains its separate launcher environment.
Rename the helper and update its one startup call and existing test.

```ts
for (const key of Object.keys(environment)) {
  if (key.toUpperCase().startsWith("T3CODE_DESKTOP_")) {
    delete environment[key];
  }
}
```

## Scope and approval

Host-approved, focused fix for the existing launcher leak; no UI, wire contract, or provider-specific implementation.
The initial per-provider environment patch was removed.

Claim was skipped at the host's direction after this refusal; the issue remains unassigned and untriaged:

```text
✗ Error: #1615 is parentless and still Untriaged 📥, and a claim moves it off the entry Status, so Standalone 📍 would be written by nobody's judgement.
Review the open trackers, projects, and slices with ghb work, then take one of the two moves:
  home it   ghb issue edit #1615 --parent ISSUE --no-relationship   — use the truthful relationship flag
  judge it  ghb issue claim #1615 --standalone    — records independence from the other open work
```

### Close conditions

- [x] **Children:** no `T3CODE_DESKTOP_*` values

## Verification

- [x] Focused tests: 17 passed, 0 failed

`vp test run apps/server/src/provider/providerSessionEnvironment.fork.test.ts apps/server/src/provider/providerSessionEnvironment.test.ts` → exit 0

The extended test covers current launcher keys, a future key with an empty value, case-insensitive matching, inherited session IDs, and preservation of PATH, credentials, and the non-prefix `T3CODE_DESKTOP` key.

- [x] Targeted typecheck: both packages passed

`vp run --filter @t3tools/provider-core --filter t3 typecheck` → exit 0

- [x] Targeted lint and formatting passed
- [x] Server production bundle passed

`vp run --filter t3 build:bundle` → exit 0

- [x] Fork gate: 762 script tests passed

`vp run fork:ci` → exit 0

## Grounding

**Claim:** with `T3CODE_DESKTOP_*` set on the server, its terminal and provider children see none.

- **Build:** local `ground/wave1` `e81b07cb04`
- **Contents:** heads of three wave-1 PRs
- **Server env:** two `T3CODE_DESKTOP_*` probe keys
- **Server environ:** both keys present
- **Plain shell:** `PPID` is the server; 0 keys
- **Claude turn:** Bash `env` reports `count=0 none`
- **Provider process environ:** 0 keys

![proof-1766.png](https://github.com/user-attachments/assets/2081b493-df3f-423c-a399-e5255a864bd7)

![k1-crop.png](https://github.com/user-attachments/assets/398000c6-81fb-4ae6-a686-f5b931e605fc)

**Not grounded:** Electron desktop placement and CDP debugging.
No server code reads `T3CODE_DESKTOP_*`; Electron keeps its own launcher environment.

Model/harness: gpt-6.1-sol / Pi.

## Fork trailers

Fork-Domain: upstream-fixes
Fork-Tier: bugfix
Fork-Upstreamable: no
Co-authored-by: donjor <[email protected]>
donjor added a commit that referenced this pull request Oct 19, 2026
#1766)

## Problem

Provider children inherit desktop placement and CDP settings from the development launcher.
Closes #1615 (`Closes #1615`).

## Change

Scrub every `T3CODE_DESKTOP_*` key at the existing server-start environment boundary, alongside inherited session IDs.
This covers adapters that re-inherit `process.env` and in-process SDKs; Electron retains its separate launcher environment.
Rename the helper and update its one startup call and existing test.

```ts
for (const key of Object.keys(environment)) {
  if (key.toUpperCase().startsWith("T3CODE_DESKTOP_")) {
    delete environment[key];
  }
}
```

## Scope and approval

Host-approved, focused fix for the existing launcher leak; no UI, wire contract, or provider-specific implementation.
The initial per-provider environment patch was removed.

Claim was skipped at the host's direction after this refusal; the issue remains unassigned and untriaged:

```text
✗ Error: #1615 is parentless and still Untriaged 📥, and a claim moves it off the entry Status, so Standalone 📍 would be written by nobody's judgement.
Review the open trackers, projects, and slices with ghb work, then take one of the two moves:
  home it   ghb issue edit #1615 --parent ISSUE --no-relationship   — use the truthful relationship flag
  judge it  ghb issue claim #1615 --standalone    — records independence from the other open work
```

### Close conditions

- [x] **Children:** no `T3CODE_DESKTOP_*` values

## Verification

- [x] Focused tests: 17 passed, 0 failed

`vp test run apps/server/src/provider/providerSessionEnvironment.fork.test.ts apps/server/src/provider/providerSessionEnvironment.test.ts` → exit 0

The extended test covers current launcher keys, a future key with an empty value, case-insensitive matching, inherited session IDs, and preservation of PATH, credentials, and the non-prefix `T3CODE_DESKTOP` key.

- [x] Targeted typecheck: both packages passed

`vp run --filter @t3tools/provider-core --filter t3 typecheck` → exit 0

- [x] Targeted lint and formatting passed
- [x] Server production bundle passed

`vp run --filter t3 build:bundle` → exit 0

- [x] Fork gate: 762 script tests passed

`vp run fork:ci` → exit 0

## Grounding

**Claim:** with `T3CODE_DESKTOP_*` set on the server, its terminal and provider children see none.

- **Build:** local `ground/wave1` `e81b07cb04`
- **Contents:** heads of three wave-1 PRs
- **Server env:** two `T3CODE_DESKTOP_*` probe keys
- **Server environ:** both keys present
- **Plain shell:** `PPID` is the server; 0 keys
- **Claude turn:** Bash `env` reports `count=0 none`
- **Provider process environ:** 0 keys

![proof-1766.png](https://github.com/user-attachments/assets/2081b493-df3f-423c-a399-e5255a864bd7)

![k1-crop.png](https://github.com/user-attachments/assets/398000c6-81fb-4ae6-a686-f5b931e605fc)

**Not grounded:** Electron desktop placement and CDP debugging.
No server code reads `T3CODE_DESKTOP_*`; Electron keeps its own launcher environment.

Model/harness: gpt-6.1-sol / Pi.

## Fork trailers

Fork-Domain: upstream-fixes
Fork-Tier: bugfix
Fork-Upstreamable: no
Co-authored-by: donjor <[email protected]>
donjor added a commit that referenced this pull request Oct 19, 2026
#1766)

## Problem

Provider children inherit desktop placement and CDP settings from the development launcher.
Closes #1615 (`Closes #1615`).

## Change

Scrub every `T3CODE_DESKTOP_*` key at the existing server-start environment boundary, alongside inherited session IDs.
This covers adapters that re-inherit `process.env` and in-process SDKs; Electron retains its separate launcher environment.
Rename the helper and update its one startup call and existing test.

```ts
for (const key of Object.keys(environment)) {
  if (key.toUpperCase().startsWith("T3CODE_DESKTOP_")) {
    delete environment[key];
  }
}
```

## Scope and approval

Host-approved, focused fix for the existing launcher leak; no UI, wire contract, or provider-specific implementation.
The initial per-provider environment patch was removed.

Claim was skipped at the host's direction after this refusal; the issue remains unassigned and untriaged:

```text
✗ Error: #1615 is parentless and still Untriaged 📥, and a claim moves it off the entry Status, so Standalone 📍 would be written by nobody's judgement.
Review the open trackers, projects, and slices with ghb work, then take one of the two moves:
  home it   ghb issue edit #1615 --parent ISSUE --no-relationship   — use the truthful relationship flag
  judge it  ghb issue claim #1615 --standalone    — records independence from the other open work
```

### Close conditions

- [x] **Children:** no `T3CODE_DESKTOP_*` values

## Verification

- [x] Focused tests: 17 passed, 0 failed

`vp test run apps/server/src/provider/providerSessionEnvironment.fork.test.ts apps/server/src/provider/providerSessionEnvironment.test.ts` → exit 0

The extended test covers current launcher keys, a future key with an empty value, case-insensitive matching, inherited session IDs, and preservation of PATH, credentials, and the non-prefix `T3CODE_DESKTOP` key.

- [x] Targeted typecheck: both packages passed

`vp run --filter @t3tools/provider-core --filter t3 typecheck` → exit 0

- [x] Targeted lint and formatting passed
- [x] Server production bundle passed

`vp run --filter t3 build:bundle` → exit 0

- [x] Fork gate: 762 script tests passed

`vp run fork:ci` → exit 0

## Grounding

**Claim:** with `T3CODE_DESKTOP_*` set on the server, its terminal and provider children see none.

- **Build:** local `ground/wave1` `e81b07cb04`
- **Contents:** heads of three wave-1 PRs
- **Server env:** two `T3CODE_DESKTOP_*` probe keys
- **Server environ:** both keys present
- **Plain shell:** `PPID` is the server; 0 keys
- **Claude turn:** Bash `env` reports `count=0 none`
- **Provider process environ:** 0 keys

![proof-1766.png](https://github.com/user-attachments/assets/2081b493-df3f-423c-a399-e5255a864bd7)

![k1-crop.png](https://github.com/user-attachments/assets/398000c6-81fb-4ae6-a686-f5b931e605fc)

**Not grounded:** Electron desktop placement and CDP debugging.
No server code reads `T3CODE_DESKTOP_*`; Electron keeps its own launcher environment.

Model/harness: gpt-6.1-sol / Pi.

## Fork trailers

Fork-Domain: upstream-fixes
Fork-Tier: bugfix
Fork-Upstreamable: no
Co-authored-by: donjor <[email protected]>
donjor added a commit that referenced this pull request Oct 20, 2026
#1766)

## Problem

Provider children inherit desktop placement and CDP settings from the development launcher.
Closes #1615 (`Closes #1615`).

## Change

Scrub every `T3CODE_DESKTOP_*` key at the existing server-start environment boundary, alongside inherited session IDs.
This covers adapters that re-inherit `process.env` and in-process SDKs; Electron retains its separate launcher environment.
Rename the helper and update its one startup call and existing test.

```ts
for (const key of Object.keys(environment)) {
  if (key.toUpperCase().startsWith("T3CODE_DESKTOP_")) {
    delete environment[key];
  }
}
```

## Scope and approval

Host-approved, focused fix for the existing launcher leak; no UI, wire contract, or provider-specific implementation.
The initial per-provider environment patch was removed.

Claim was skipped at the host's direction after this refusal; the issue remains unassigned and untriaged:

```text
✗ Error: #1615 is parentless and still Untriaged 📥, and a claim moves it off the entry Status, so Standalone 📍 would be written by nobody's judgement.
Review the open trackers, projects, and slices with ghb work, then take one of the two moves:
  home it   ghb issue edit #1615 --parent ISSUE --no-relationship   — use the truthful relationship flag
  judge it  ghb issue claim #1615 --standalone    — records independence from the other open work
```

### Close conditions

- [x] **Children:** no `T3CODE_DESKTOP_*` values

## Verification

- [x] Focused tests: 17 passed, 0 failed

`vp test run apps/server/src/provider/providerSessionEnvironment.fork.test.ts apps/server/src/provider/providerSessionEnvironment.test.ts` → exit 0

The extended test covers current launcher keys, a future key with an empty value, case-insensitive matching, inherited session IDs, and preservation of PATH, credentials, and the non-prefix `T3CODE_DESKTOP` key.

- [x] Targeted typecheck: both packages passed

`vp run --filter @t3tools/provider-core --filter t3 typecheck` → exit 0

- [x] Targeted lint and formatting passed
- [x] Server production bundle passed

`vp run --filter t3 build:bundle` → exit 0

- [x] Fork gate: 762 script tests passed

`vp run fork:ci` → exit 0

## Grounding

**Claim:** with `T3CODE_DESKTOP_*` set on the server, its terminal and provider children see none.

- **Build:** local `ground/wave1` `e81b07cb04`
- **Contents:** heads of three wave-1 PRs
- **Server env:** two `T3CODE_DESKTOP_*` probe keys
- **Server environ:** both keys present
- **Plain shell:** `PPID` is the server; 0 keys
- **Claude turn:** Bash `env` reports `count=0 none`
- **Provider process environ:** 0 keys

![proof-1766.png](https://github.com/user-attachments/assets/2081b493-df3f-423c-a399-e5255a864bd7)

![k1-crop.png](https://github.com/user-attachments/assets/398000c6-81fb-4ae6-a686-f5b931e605fc)

**Not grounded:** Electron desktop placement and CDP debugging.
No server code reads `T3CODE_DESKTOP_*`; Electron keeps its own launcher environment.

Model/harness: gpt-6.1-sol / Pi.

## Fork trailers

Fork-Domain: upstream-fixes
Fork-Tier: bugfix
Fork-Upstreamable: no
Co-authored-by: donjor <[email protected]>
donjor added a commit that referenced this pull request Oct 20, 2026
#1766)

## Problem

Provider children inherit desktop placement and CDP settings from the development launcher.
Closes #1615 (`Closes #1615`).

## Change

Scrub every `T3CODE_DESKTOP_*` key at the existing server-start environment boundary, alongside inherited session IDs.
This covers adapters that re-inherit `process.env` and in-process SDKs; Electron retains its separate launcher environment.
Rename the helper and update its one startup call and existing test.

```ts
for (const key of Object.keys(environment)) {
  if (key.toUpperCase().startsWith("T3CODE_DESKTOP_")) {
    delete environment[key];
  }
}
```

## Scope and approval

Host-approved, focused fix for the existing launcher leak; no UI, wire contract, or provider-specific implementation.
The initial per-provider environment patch was removed.

Claim was skipped at the host's direction after this refusal; the issue remains unassigned and untriaged:

```text
✗ Error: #1615 is parentless and still Untriaged 📥, and a claim moves it off the entry Status, so Standalone 📍 would be written by nobody's judgement.
Review the open trackers, projects, and slices with ghb work, then take one of the two moves:
  home it   ghb issue edit #1615 --parent ISSUE --no-relationship   — use the truthful relationship flag
  judge it  ghb issue claim #1615 --standalone    — records independence from the other open work
```

### Close conditions

- [x] **Children:** no `T3CODE_DESKTOP_*` values

## Verification

- [x] Focused tests: 17 passed, 0 failed

`vp test run apps/server/src/provider/providerSessionEnvironment.fork.test.ts apps/server/src/provider/providerSessionEnvironment.test.ts` → exit 0

The extended test covers current launcher keys, a future key with an empty value, case-insensitive matching, inherited session IDs, and preservation of PATH, credentials, and the non-prefix `T3CODE_DESKTOP` key.

- [x] Targeted typecheck: both packages passed

`vp run --filter @t3tools/provider-core --filter t3 typecheck` → exit 0

- [x] Targeted lint and formatting passed
- [x] Server production bundle passed

`vp run --filter t3 build:bundle` → exit 0

- [x] Fork gate: 762 script tests passed

`vp run fork:ci` → exit 0

## Grounding

**Claim:** with `T3CODE_DESKTOP_*` set on the server, its terminal and provider children see none.

- **Build:** local `ground/wave1` `e81b07cb04`
- **Contents:** heads of three wave-1 PRs
- **Server env:** two `T3CODE_DESKTOP_*` probe keys
- **Server environ:** both keys present
- **Plain shell:** `PPID` is the server; 0 keys
- **Claude turn:** Bash `env` reports `count=0 none`
- **Provider process environ:** 0 keys

![proof-1766.png](https://github.com/user-attachments/assets/2081b493-df3f-423c-a399-e5255a864bd7)

![k1-crop.png](https://github.com/user-attachments/assets/398000c6-81fb-4ae6-a686-f5b931e605fc)

**Not grounded:** Electron desktop placement and CDP debugging.
No server code reads `T3CODE_DESKTOP_*`; Electron keeps its own launcher environment.

Model/harness: gpt-6.1-sol / Pi.

## Fork trailers

Fork-Domain: upstream-fixes
Fork-Tier: bugfix
Fork-Upstreamable: no
Co-authored-by: donjor <[email protected]>
donjor added a commit that referenced this pull request Oct 20, 2026
#1766)

## Problem

Provider children inherit desktop placement and CDP settings from the development launcher.
Closes #1615 (`Closes #1615`).

## Change

Scrub every `T3CODE_DESKTOP_*` key at the existing server-start environment boundary, alongside inherited session IDs.
This covers adapters that re-inherit `process.env` and in-process SDKs; Electron retains its separate launcher environment.
Rename the helper and update its one startup call and existing test.

```ts
for (const key of Object.keys(environment)) {
  if (key.toUpperCase().startsWith("T3CODE_DESKTOP_")) {
    delete environment[key];
  }
}
```

## Scope and approval

Host-approved, focused fix for the existing launcher leak; no UI, wire contract, or provider-specific implementation.
The initial per-provider environment patch was removed.

Claim was skipped at the host's direction after this refusal; the issue remains unassigned and untriaged:

```text
✗ Error: #1615 is parentless and still Untriaged 📥, and a claim moves it off the entry Status, so Standalone 📍 would be written by nobody's judgement.
Review the open trackers, projects, and slices with ghb work, then take one of the two moves:
  home it   ghb issue edit #1615 --parent ISSUE --no-relationship   — use the truthful relationship flag
  judge it  ghb issue claim #1615 --standalone    — records independence from the other open work
```

### Close conditions

- [x] **Children:** no `T3CODE_DESKTOP_*` values

## Verification

- [x] Focused tests: 17 passed, 0 failed

`vp test run apps/server/src/provider/providerSessionEnvironment.fork.test.ts apps/server/src/provider/providerSessionEnvironment.test.ts` → exit 0

The extended test covers current launcher keys, a future key with an empty value, case-insensitive matching, inherited session IDs, and preservation of PATH, credentials, and the non-prefix `T3CODE_DESKTOP` key.

- [x] Targeted typecheck: both packages passed

`vp run --filter @t3tools/provider-core --filter t3 typecheck` → exit 0

- [x] Targeted lint and formatting passed
- [x] Server production bundle passed

`vp run --filter t3 build:bundle` → exit 0

- [x] Fork gate: 762 script tests passed

`vp run fork:ci` → exit 0

## Grounding

**Claim:** with `T3CODE_DESKTOP_*` set on the server, its terminal and provider children see none.

- **Build:** local `ground/wave1` `e81b07cb04`
- **Contents:** heads of three wave-1 PRs
- **Server env:** two `T3CODE_DESKTOP_*` probe keys
- **Server environ:** both keys present
- **Plain shell:** `PPID` is the server; 0 keys
- **Claude turn:** Bash `env` reports `count=0 none`
- **Provider process environ:** 0 keys

![proof-1766.png](https://github.com/user-attachments/assets/2081b493-df3f-423c-a399-e5255a864bd7)

![k1-crop.png](https://github.com/user-attachments/assets/398000c6-81fb-4ae6-a686-f5b931e605fc)

**Not grounded:** Electron desktop placement and CDP debugging.
No server code reads `T3CODE_DESKTOP_*`; Electron keeps its own launcher environment.

Model/harness: gpt-6.1-sol / Pi.

## Fork trailers

Fork-Domain: upstream-fixes
Fork-Tier: bugfix
Fork-Upstreamable: no
Co-authored-by: donjor <[email protected]>
donjor added a commit that referenced this pull request Oct 20, 2026
#1766)

## Problem

Provider children inherit desktop placement and CDP settings from the development launcher.
Closes #1615 (`Closes #1615`).

## Change

Scrub every `T3CODE_DESKTOP_*` key at the existing server-start environment boundary, alongside inherited session IDs.
This covers adapters that re-inherit `process.env` and in-process SDKs; Electron retains its separate launcher environment.
Rename the helper and update its one startup call and existing test.

```ts
for (const key of Object.keys(environment)) {
  if (key.toUpperCase().startsWith("T3CODE_DESKTOP_")) {
    delete environment[key];
  }
}
```

## Scope and approval

Host-approved, focused fix for the existing launcher leak; no UI, wire contract, or provider-specific implementation.
The initial per-provider environment patch was removed.

Claim was skipped at the host's direction after this refusal; the issue remains unassigned and untriaged:

```text
✗ Error: #1615 is parentless and still Untriaged 📥, and a claim moves it off the entry Status, so Standalone 📍 would be written by nobody's judgement.
Review the open trackers, projects, and slices with ghb work, then take one of the two moves:
  home it   ghb issue edit #1615 --parent ISSUE --no-relationship   — use the truthful relationship flag
  judge it  ghb issue claim #1615 --standalone    — records independence from the other open work
```

### Close conditions

- [x] **Children:** no `T3CODE_DESKTOP_*` values

## Verification

- [x] Focused tests: 17 passed, 0 failed

`vp test run apps/server/src/provider/providerSessionEnvironment.fork.test.ts apps/server/src/provider/providerSessionEnvironment.test.ts` → exit 0

The extended test covers current launcher keys, a future key with an empty value, case-insensitive matching, inherited session IDs, and preservation of PATH, credentials, and the non-prefix `T3CODE_DESKTOP` key.

- [x] Targeted typecheck: both packages passed

`vp run --filter @t3tools/provider-core --filter t3 typecheck` → exit 0

- [x] Targeted lint and formatting passed
- [x] Server production bundle passed

`vp run --filter t3 build:bundle` → exit 0

- [x] Fork gate: 762 script tests passed

`vp run fork:ci` → exit 0

## Grounding

**Claim:** with `T3CODE_DESKTOP_*` set on the server, its terminal and provider children see none.

- **Build:** local `ground/wave1` `e81b07cb04`
- **Contents:** heads of three wave-1 PRs
- **Server env:** two `T3CODE_DESKTOP_*` probe keys
- **Server environ:** both keys present
- **Plain shell:** `PPID` is the server; 0 keys
- **Claude turn:** Bash `env` reports `count=0 none`
- **Provider process environ:** 0 keys

![proof-1766.png](https://github.com/user-attachments/assets/2081b493-df3f-423c-a399-e5255a864bd7)

![k1-crop.png](https://github.com/user-attachments/assets/398000c6-81fb-4ae6-a686-f5b931e605fc)

**Not grounded:** Electron desktop placement and CDP debugging.
No server code reads `T3CODE_DESKTOP_*`; Electron keeps its own launcher environment.

Model/harness: gpt-6.1-sol / Pi.

## Fork trailers

Fork-Domain: upstream-fixes
Fork-Tier: bugfix
Fork-Upstreamable: no
Co-authored-by: donjor <[email protected]>
donjor added a commit that referenced this pull request Oct 20, 2026
#1766)

## Problem

Provider children inherit desktop placement and CDP settings from the development launcher.
Closes #1615 (`Closes #1615`).

## Change

Scrub every `T3CODE_DESKTOP_*` key at the existing server-start environment boundary, alongside inherited session IDs.
This covers adapters that re-inherit `process.env` and in-process SDKs; Electron retains its separate launcher environment.
Rename the helper and update its one startup call and existing test.

```ts
for (const key of Object.keys(environment)) {
  if (key.toUpperCase().startsWith("T3CODE_DESKTOP_")) {
    delete environment[key];
  }
}
```

## Scope and approval

Host-approved, focused fix for the existing launcher leak; no UI, wire contract, or provider-specific implementation.
The initial per-provider environment patch was removed.

Claim was skipped at the host's direction after this refusal; the issue remains unassigned and untriaged:

```text
✗ Error: #1615 is parentless and still Untriaged 📥, and a claim moves it off the entry Status, so Standalone 📍 would be written by nobody's judgement.
Review the open trackers, projects, and slices with ghb work, then take one of the two moves:
  home it   ghb issue edit #1615 --parent ISSUE --no-relationship   — use the truthful relationship flag
  judge it  ghb issue claim #1615 --standalone    — records independence from the other open work
```

### Close conditions

- [x] **Children:** no `T3CODE_DESKTOP_*` values

## Verification

- [x] Focused tests: 17 passed, 0 failed

`vp test run apps/server/src/provider/providerSessionEnvironment.fork.test.ts apps/server/src/provider/providerSessionEnvironment.test.ts` → exit 0

The extended test covers current launcher keys, a future key with an empty value, case-insensitive matching, inherited session IDs, and preservation of PATH, credentials, and the non-prefix `T3CODE_DESKTOP` key.

- [x] Targeted typecheck: both packages passed

`vp run --filter @t3tools/provider-core --filter t3 typecheck` → exit 0

- [x] Targeted lint and formatting passed
- [x] Server production bundle passed

`vp run --filter t3 build:bundle` → exit 0

- [x] Fork gate: 762 script tests passed

`vp run fork:ci` → exit 0

## Grounding

**Claim:** with `T3CODE_DESKTOP_*` set on the server, its terminal and provider children see none.

- **Build:** local `ground/wave1` `e81b07cb04`
- **Contents:** heads of three wave-1 PRs
- **Server env:** two `T3CODE_DESKTOP_*` probe keys
- **Server environ:** both keys present
- **Plain shell:** `PPID` is the server; 0 keys
- **Claude turn:** Bash `env` reports `count=0 none`
- **Provider process environ:** 0 keys

![proof-1766.png](https://github.com/user-attachments/assets/2081b493-df3f-423c-a399-e5255a864bd7)

![k1-crop.png](https://github.com/user-attachments/assets/398000c6-81fb-4ae6-a686-f5b931e605fc)

**Not grounded:** Electron desktop placement and CDP debugging.
No server code reads `T3CODE_DESKTOP_*`; Electron keeps its own launcher environment.

Model/harness: gpt-6.1-sol / Pi.

## Fork trailers

Fork-Domain: upstream-fixes
Fork-Tier: bugfix
Fork-Upstreamable: no
Co-authored-by: donjor <[email protected]>
donjor added a commit that referenced this pull request Oct 21, 2026
#1766)

## Problem

Provider children inherit desktop placement and CDP settings from the development launcher.
Closes #1615 (`Closes #1615`).

## Change

Scrub every `T3CODE_DESKTOP_*` key at the existing server-start environment boundary, alongside inherited session IDs.
This covers adapters that re-inherit `process.env` and in-process SDKs; Electron retains its separate launcher environment.
Rename the helper and update its one startup call and existing test.

```ts
for (const key of Object.keys(environment)) {
  if (key.toUpperCase().startsWith("T3CODE_DESKTOP_")) {
    delete environment[key];
  }
}
```

## Scope and approval

Host-approved, focused fix for the existing launcher leak; no UI, wire contract, or provider-specific implementation.
The initial per-provider environment patch was removed.

Claim was skipped at the host's direction after this refusal; the issue remains unassigned and untriaged:

```text
✗ Error: #1615 is parentless and still Untriaged 📥, and a claim moves it off the entry Status, so Standalone 📍 would be written by nobody's judgement.
Review the open trackers, projects, and slices with ghb work, then take one of the two moves:
  home it   ghb issue edit #1615 --parent ISSUE --no-relationship   — use the truthful relationship flag
  judge it  ghb issue claim #1615 --standalone    — records independence from the other open work
```

### Close conditions

- [x] **Children:** no `T3CODE_DESKTOP_*` values

## Verification

- [x] Focused tests: 17 passed, 0 failed

`vp test run apps/server/src/provider/providerSessionEnvironment.fork.test.ts apps/server/src/provider/providerSessionEnvironment.test.ts` → exit 0

The extended test covers current launcher keys, a future key with an empty value, case-insensitive matching, inherited session IDs, and preservation of PATH, credentials, and the non-prefix `T3CODE_DESKTOP` key.

- [x] Targeted typecheck: both packages passed

`vp run --filter @t3tools/provider-core --filter t3 typecheck` → exit 0

- [x] Targeted lint and formatting passed
- [x] Server production bundle passed

`vp run --filter t3 build:bundle` → exit 0

- [x] Fork gate: 762 script tests passed

`vp run fork:ci` → exit 0

## Grounding

**Claim:** with `T3CODE_DESKTOP_*` set on the server, its terminal and provider children see none.

- **Build:** local `ground/wave1` `e81b07cb04`
- **Contents:** heads of three wave-1 PRs
- **Server env:** two `T3CODE_DESKTOP_*` probe keys
- **Server environ:** both keys present
- **Plain shell:** `PPID` is the server; 0 keys
- **Claude turn:** Bash `env` reports `count=0 none`
- **Provider process environ:** 0 keys

![proof-1766.png](https://github.com/user-attachments/assets/2081b493-df3f-423c-a399-e5255a864bd7)

![k1-crop.png](https://github.com/user-attachments/assets/398000c6-81fb-4ae6-a686-f5b931e605fc)

**Not grounded:** Electron desktop placement and CDP debugging.
No server code reads `T3CODE_DESKTOP_*`; Electron keeps its own launcher environment.

Model/harness: gpt-6.1-sol / Pi.

## Fork trailers

Fork-Domain: upstream-fixes
Fork-Tier: bugfix
Fork-Upstreamable: no
Co-authored-by: donjor <[email protected]>
donjor added a commit that referenced this pull request Oct 21, 2026
#1766)

## Problem

Provider children inherit desktop placement and CDP settings from the development launcher.
Closes #1615 (`Closes #1615`).

## Change

Scrub every `T3CODE_DESKTOP_*` key at the existing server-start environment boundary, alongside inherited session IDs.
This covers adapters that re-inherit `process.env` and in-process SDKs; Electron retains its separate launcher environment.
Rename the helper and update its one startup call and existing test.

```ts
for (const key of Object.keys(environment)) {
  if (key.toUpperCase().startsWith("T3CODE_DESKTOP_")) {
    delete environment[key];
  }
}
```

## Scope and approval

Host-approved, focused fix for the existing launcher leak; no UI, wire contract, or provider-specific implementation.
The initial per-provider environment patch was removed.

Claim was skipped at the host's direction after this refusal; the issue remains unassigned and untriaged:

```text
✗ Error: #1615 is parentless and still Untriaged 📥, and a claim moves it off the entry Status, so Standalone 📍 would be written by nobody's judgement.
Review the open trackers, projects, and slices with ghb work, then take one of the two moves:
  home it   ghb issue edit #1615 --parent ISSUE --no-relationship   — use the truthful relationship flag
  judge it  ghb issue claim #1615 --standalone    — records independence from the other open work
```

### Close conditions

- [x] **Children:** no `T3CODE_DESKTOP_*` values

## Verification

- [x] Focused tests: 17 passed, 0 failed

`vp test run apps/server/src/provider/providerSessionEnvironment.fork.test.ts apps/server/src/provider/providerSessionEnvironment.test.ts` → exit 0

The extended test covers current launcher keys, a future key with an empty value, case-insensitive matching, inherited session IDs, and preservation of PATH, credentials, and the non-prefix `T3CODE_DESKTOP` key.

- [x] Targeted typecheck: both packages passed

`vp run --filter @t3tools/provider-core --filter t3 typecheck` → exit 0

- [x] Targeted lint and formatting passed
- [x] Server production bundle passed

`vp run --filter t3 build:bundle` → exit 0

- [x] Fork gate: 762 script tests passed

`vp run fork:ci` → exit 0

## Grounding

**Claim:** with `T3CODE_DESKTOP_*` set on the server, its terminal and provider children see none.

- **Build:** local `ground/wave1` `e81b07cb04`
- **Contents:** heads of three wave-1 PRs
- **Server env:** two `T3CODE_DESKTOP_*` probe keys
- **Server environ:** both keys present
- **Plain shell:** `PPID` is the server; 0 keys
- **Claude turn:** Bash `env` reports `count=0 none`
- **Provider process environ:** 0 keys

![proof-1766.png](https://github.com/user-attachments/assets/2081b493-df3f-423c-a399-e5255a864bd7)

![k1-crop.png](https://github.com/user-attachments/assets/398000c6-81fb-4ae6-a686-f5b931e605fc)

**Not grounded:** Electron desktop placement and CDP debugging.
No server code reads `T3CODE_DESKTOP_*`; Electron keeps its own launcher environment.

Model/harness: gpt-6.1-sol / Pi.

## Fork trailers

Fork-Domain: upstream-fixes
Fork-Tier: bugfix
Fork-Upstreamable: no
Co-authored-by: donjor <[email protected]>
donjor added a commit that referenced this pull request Oct 21, 2026
#1766)

## Problem

Provider children inherit desktop placement and CDP settings from the development launcher.
Closes #1615 (`Closes #1615`).

## Change

Scrub every `T3CODE_DESKTOP_*` key at the existing server-start environment boundary, alongside inherited session IDs.
This covers adapters that re-inherit `process.env` and in-process SDKs; Electron retains its separate launcher environment.
Rename the helper and update its one startup call and existing test.

```ts
for (const key of Object.keys(environment)) {
  if (key.toUpperCase().startsWith("T3CODE_DESKTOP_")) {
    delete environment[key];
  }
}
```

## Scope and approval

Host-approved, focused fix for the existing launcher leak; no UI, wire contract, or provider-specific implementation.
The initial per-provider environment patch was removed.

Claim was skipped at the host's direction after this refusal; the issue remains unassigned and untriaged:

```text
✗ Error: #1615 is parentless and still Untriaged 📥, and a claim moves it off the entry Status, so Standalone 📍 would be written by nobody's judgement.
Review the open trackers, projects, and slices with ghb work, then take one of the two moves:
  home it   ghb issue edit #1615 --parent ISSUE --no-relationship   — use the truthful relationship flag
  judge it  ghb issue claim #1615 --standalone    — records independence from the other open work
```

### Close conditions

- [x] **Children:** no `T3CODE_DESKTOP_*` values

## Verification

- [x] Focused tests: 17 passed, 0 failed

`vp test run apps/server/src/provider/providerSessionEnvironment.fork.test.ts apps/server/src/provider/providerSessionEnvironment.test.ts` → exit 0

The extended test covers current launcher keys, a future key with an empty value, case-insensitive matching, inherited session IDs, and preservation of PATH, credentials, and the non-prefix `T3CODE_DESKTOP` key.

- [x] Targeted typecheck: both packages passed

`vp run --filter @t3tools/provider-core --filter t3 typecheck` → exit 0

- [x] Targeted lint and formatting passed
- [x] Server production bundle passed

`vp run --filter t3 build:bundle` → exit 0

- [x] Fork gate: 762 script tests passed

`vp run fork:ci` → exit 0

## Grounding

**Claim:** with `T3CODE_DESKTOP_*` set on the server, its terminal and provider children see none.

- **Build:** local `ground/wave1` `e81b07cb04`
- **Contents:** heads of three wave-1 PRs
- **Server env:** two `T3CODE_DESKTOP_*` probe keys
- **Server environ:** both keys present
- **Plain shell:** `PPID` is the server; 0 keys
- **Claude turn:** Bash `env` reports `count=0 none`
- **Provider process environ:** 0 keys

![proof-1766.png](https://github.com/user-attachments/assets/2081b493-df3f-423c-a399-e5255a864bd7)

![k1-crop.png](https://github.com/user-attachments/assets/398000c6-81fb-4ae6-a686-f5b931e605fc)

**Not grounded:** Electron desktop placement and CDP debugging.
No server code reads `T3CODE_DESKTOP_*`; Electron keeps its own launcher environment.

Model/harness: gpt-6.1-sol / Pi.

## Fork trailers

Fork-Domain: upstream-fixes
Fork-Tier: bugfix
Fork-Upstreamable: no
Co-authored-by: donjor <[email protected]>
donjor added a commit that referenced this pull request Oct 21, 2026
#1766)

## Problem

Provider children inherit desktop placement and CDP settings from the development launcher.
Closes #1615 (`Closes #1615`).

## Change

Scrub every `T3CODE_DESKTOP_*` key at the existing server-start environment boundary, alongside inherited session IDs.
This covers adapters that re-inherit `process.env` and in-process SDKs; Electron retains its separate launcher environment.
Rename the helper and update its one startup call and existing test.

```ts
for (const key of Object.keys(environment)) {
  if (key.toUpperCase().startsWith("T3CODE_DESKTOP_")) {
    delete environment[key];
  }
}
```

## Scope and approval

Host-approved, focused fix for the existing launcher leak; no UI, wire contract, or provider-specific implementation.
The initial per-provider environment patch was removed.

Claim was skipped at the host's direction after this refusal; the issue remains unassigned and untriaged:

```text
✗ Error: #1615 is parentless and still Untriaged 📥, and a claim moves it off the entry Status, so Standalone 📍 would be written by nobody's judgement.
Review the open trackers, projects, and slices with ghb work, then take one of the two moves:
  home it   ghb issue edit #1615 --parent ISSUE --no-relationship   — use the truthful relationship flag
  judge it  ghb issue claim #1615 --standalone    — records independence from the other open work
```

### Close conditions

- [x] **Children:** no `T3CODE_DESKTOP_*` values

## Verification

- [x] Focused tests: 17 passed, 0 failed

`vp test run apps/server/src/provider/providerSessionEnvironment.fork.test.ts apps/server/src/provider/providerSessionEnvironment.test.ts` → exit 0

The extended test covers current launcher keys, a future key with an empty value, case-insensitive matching, inherited session IDs, and preservation of PATH, credentials, and the non-prefix `T3CODE_DESKTOP` key.

- [x] Targeted typecheck: both packages passed

`vp run --filter @t3tools/provider-core --filter t3 typecheck` → exit 0

- [x] Targeted lint and formatting passed
- [x] Server production bundle passed

`vp run --filter t3 build:bundle` → exit 0

- [x] Fork gate: 762 script tests passed

`vp run fork:ci` → exit 0

## Grounding

**Claim:** with `T3CODE_DESKTOP_*` set on the server, its terminal and provider children see none.

- **Build:** local `ground/wave1` `e81b07cb04`
- **Contents:** heads of three wave-1 PRs
- **Server env:** two `T3CODE_DESKTOP_*` probe keys
- **Server environ:** both keys present
- **Plain shell:** `PPID` is the server; 0 keys
- **Claude turn:** Bash `env` reports `count=0 none`
- **Provider process environ:** 0 keys

![proof-1766.png](https://github.com/user-attachments/assets/2081b493-df3f-423c-a399-e5255a864bd7)

![k1-crop.png](https://github.com/user-attachments/assets/398000c6-81fb-4ae6-a686-f5b931e605fc)

**Not grounded:** Electron desktop placement and CDP debugging.
No server code reads `T3CODE_DESKTOP_*`; Electron keeps its own launcher environment.

Model/harness: gpt-6.1-sol / Pi.

## Fork trailers

Fork-Domain: upstream-fixes
Fork-Tier: bugfix
Fork-Upstreamable: no
Co-authored-by: donjor <[email protected]>
donjor added a commit that referenced this pull request Oct 21, 2026
#1766)

## Problem

Provider children inherit desktop placement and CDP settings from the development launcher.
Closes #1615 (`Closes #1615`).

## Change

Scrub every `T3CODE_DESKTOP_*` key at the existing server-start environment boundary, alongside inherited session IDs.
This covers adapters that re-inherit `process.env` and in-process SDKs; Electron retains its separate launcher environment.
Rename the helper and update its one startup call and existing test.

```ts
for (const key of Object.keys(environment)) {
  if (key.toUpperCase().startsWith("T3CODE_DESKTOP_")) {
    delete environment[key];
  }
}
```

## Scope and approval

Host-approved, focused fix for the existing launcher leak; no UI, wire contract, or provider-specific implementation.
The initial per-provider environment patch was removed.

Claim was skipped at the host's direction after this refusal; the issue remains unassigned and untriaged:

```text
✗ Error: #1615 is parentless and still Untriaged 📥, and a claim moves it off the entry Status, so Standalone 📍 would be written by nobody's judgement.
Review the open trackers, projects, and slices with ghb work, then take one of the two moves:
  home it   ghb issue edit #1615 --parent ISSUE --no-relationship   — use the truthful relationship flag
  judge it  ghb issue claim #1615 --standalone    — records independence from the other open work
```

### Close conditions

- [x] **Children:** no `T3CODE_DESKTOP_*` values

## Verification

- [x] Focused tests: 17 passed, 0 failed

`vp test run apps/server/src/provider/providerSessionEnvironment.fork.test.ts apps/server/src/provider/providerSessionEnvironment.test.ts` → exit 0

The extended test covers current launcher keys, a future key with an empty value, case-insensitive matching, inherited session IDs, and preservation of PATH, credentials, and the non-prefix `T3CODE_DESKTOP` key.

- [x] Targeted typecheck: both packages passed

`vp run --filter @t3tools/provider-core --filter t3 typecheck` → exit 0

- [x] Targeted lint and formatting passed
- [x] Server production bundle passed

`vp run --filter t3 build:bundle` → exit 0

- [x] Fork gate: 762 script tests passed

`vp run fork:ci` → exit 0

## Grounding

**Claim:** with `T3CODE_DESKTOP_*` set on the server, its terminal and provider children see none.

- **Build:** local `ground/wave1` `e81b07cb04`
- **Contents:** heads of three wave-1 PRs
- **Server env:** two `T3CODE_DESKTOP_*` probe keys
- **Server environ:** both keys present
- **Plain shell:** `PPID` is the server; 0 keys
- **Claude turn:** Bash `env` reports `count=0 none`
- **Provider process environ:** 0 keys

![proof-1766.png](https://github.com/user-attachments/assets/2081b493-df3f-423c-a399-e5255a864bd7)

![k1-crop.png](https://github.com/user-attachments/assets/398000c6-81fb-4ae6-a686-f5b931e605fc)

**Not grounded:** Electron desktop placement and CDP debugging.
No server code reads `T3CODE_DESKTOP_*`; Electron keeps its own launcher environment.

Model/harness: gpt-6.1-sol / Pi.

## Fork trailers

Fork-Domain: upstream-fixes
Fork-Tier: bugfix
Fork-Upstreamable: no
Co-authored-by: donjor <[email protected]>
donjor added a commit that referenced this pull request Oct 22, 2026
#1766)

## Problem

Provider children inherit desktop placement and CDP settings from the development launcher.
Closes #1615 (`Closes #1615`).

## Change

Scrub every `T3CODE_DESKTOP_*` key at the existing server-start environment boundary, alongside inherited session IDs.
This covers adapters that re-inherit `process.env` and in-process SDKs; Electron retains its separate launcher environment.
Rename the helper and update its one startup call and existing test.

```ts
for (const key of Object.keys(environment)) {
  if (key.toUpperCase().startsWith("T3CODE_DESKTOP_")) {
    delete environment[key];
  }
}
```

## Scope and approval

Host-approved, focused fix for the existing launcher leak; no UI, wire contract, or provider-specific implementation.
The initial per-provider environment patch was removed.

Claim was skipped at the host's direction after this refusal; the issue remains unassigned and untriaged:

```text
✗ Error: #1615 is parentless and still Untriaged 📥, and a claim moves it off the entry Status, so Standalone 📍 would be written by nobody's judgement.
Review the open trackers, projects, and slices with ghb work, then take one of the two moves:
  home it   ghb issue edit #1615 --parent ISSUE --no-relationship   — use the truthful relationship flag
  judge it  ghb issue claim #1615 --standalone    — records independence from the other open work
```

### Close conditions

- [x] **Children:** no `T3CODE_DESKTOP_*` values

## Verification

- [x] Focused tests: 17 passed, 0 failed

`vp test run apps/server/src/provider/providerSessionEnvironment.fork.test.ts apps/server/src/provider/providerSessionEnvironment.test.ts` → exit 0

The extended test covers current launcher keys, a future key with an empty value, case-insensitive matching, inherited session IDs, and preservation of PATH, credentials, and the non-prefix `T3CODE_DESKTOP` key.

- [x] Targeted typecheck: both packages passed

`vp run --filter @t3tools/provider-core --filter t3 typecheck` → exit 0

- [x] Targeted lint and formatting passed
- [x] Server production bundle passed

`vp run --filter t3 build:bundle` → exit 0

- [x] Fork gate: 762 script tests passed

`vp run fork:ci` → exit 0

## Grounding

**Claim:** with `T3CODE_DESKTOP_*` set on the server, its terminal and provider children see none.

- **Build:** local `ground/wave1` `e81b07cb04`
- **Contents:** heads of three wave-1 PRs
- **Server env:** two `T3CODE_DESKTOP_*` probe keys
- **Server environ:** both keys present
- **Plain shell:** `PPID` is the server; 0 keys
- **Claude turn:** Bash `env` reports `count=0 none`
- **Provider process environ:** 0 keys

![proof-1766.png](https://github.com/user-attachments/assets/2081b493-df3f-423c-a399-e5255a864bd7)

![k1-crop.png](https://github.com/user-attachments/assets/398000c6-81fb-4ae6-a686-f5b931e605fc)

**Not grounded:** Electron desktop placement and CDP debugging.
No server code reads `T3CODE_DESKTOP_*`; Electron keeps its own launcher environment.

Model/harness: gpt-6.1-sol / Pi.

## Fork trailers

Fork-Domain: upstream-fixes
Fork-Tier: bugfix
Fork-Upstreamable: no
Co-authored-by: donjor <[email protected]>
donjor added a commit that referenced this pull request Oct 22, 2026
#1766)

## Problem

Provider children inherit desktop placement and CDP settings from the development launcher.
Closes #1615 (`Closes #1615`).

## Change

Scrub every `T3CODE_DESKTOP_*` key at the existing server-start environment boundary, alongside inherited session IDs.
This covers adapters that re-inherit `process.env` and in-process SDKs; Electron retains its separate launcher environment.
Rename the helper and update its one startup call and existing test.

```ts
for (const key of Object.keys(environment)) {
  if (key.toUpperCase().startsWith("T3CODE_DESKTOP_")) {
    delete environment[key];
  }
}
```

## Scope and approval

Host-approved, focused fix for the existing launcher leak; no UI, wire contract, or provider-specific implementation.
The initial per-provider environment patch was removed.

Claim was skipped at the host's direction after this refusal; the issue remains unassigned and untriaged:

```text
✗ Error: #1615 is parentless and still Untriaged 📥, and a claim moves it off the entry Status, so Standalone 📍 would be written by nobody's judgement.
Review the open trackers, projects, and slices with ghb work, then take one of the two moves:
  home it   ghb issue edit #1615 --parent ISSUE --no-relationship   — use the truthful relationship flag
  judge it  ghb issue claim #1615 --standalone    — records independence from the other open work
```

### Close conditions

- [x] **Children:** no `T3CODE_DESKTOP_*` values

## Verification

- [x] Focused tests: 17 passed, 0 failed

`vp test run apps/server/src/provider/providerSessionEnvironment.fork.test.ts apps/server/src/provider/providerSessionEnvironment.test.ts` → exit 0

The extended test covers current launcher keys, a future key with an empty value, case-insensitive matching, inherited session IDs, and preservation of PATH, credentials, and the non-prefix `T3CODE_DESKTOP` key.

- [x] Targeted typecheck: both packages passed

`vp run --filter @t3tools/provider-core --filter t3 typecheck` → exit 0

- [x] Targeted lint and formatting passed
- [x] Server production bundle passed

`vp run --filter t3 build:bundle` → exit 0

- [x] Fork gate: 762 script tests passed

`vp run fork:ci` → exit 0

## Grounding

**Claim:** with `T3CODE_DESKTOP_*` set on the server, its terminal and provider children see none.

- **Build:** local `ground/wave1` `e81b07cb04`
- **Contents:** heads of three wave-1 PRs
- **Server env:** two `T3CODE_DESKTOP_*` probe keys
- **Server environ:** both keys present
- **Plain shell:** `PPID` is the server; 0 keys
- **Claude turn:** Bash `env` reports `count=0 none`
- **Provider process environ:** 0 keys

![proof-1766.png](https://github.com/user-attachments/assets/2081b493-df3f-423c-a399-e5255a864bd7)

![k1-crop.png](https://github.com/user-attachments/assets/398000c6-81fb-4ae6-a686-f5b931e605fc)

**Not grounded:** Electron desktop placement and CDP debugging.
No server code reads `T3CODE_DESKTOP_*`; Electron keeps its own launcher environment.

Model/harness: gpt-6.1-sol / Pi.

## Fork trailers

Fork-Domain: upstream-fixes
Fork-Tier: bugfix
Fork-Upstreamable: no
Co-authored-by: donjor <[email protected]>
donjor added a commit that referenced this pull request Oct 23, 2026
#1766)

## Problem

Provider children inherit desktop placement and CDP settings from the development launcher.
Closes #1615 (`Closes #1615`).

## Change

Scrub every `T3CODE_DESKTOP_*` key at the existing server-start environment boundary, alongside inherited session IDs.
This covers adapters that re-inherit `process.env` and in-process SDKs; Electron retains its separate launcher environment.
Rename the helper and update its one startup call and existing test.

```ts
for (const key of Object.keys(environment)) {
  if (key.toUpperCase().startsWith("T3CODE_DESKTOP_")) {
    delete environment[key];
  }
}
```

## Scope and approval

Host-approved, focused fix for the existing launcher leak; no UI, wire contract, or provider-specific implementation.
The initial per-provider environment patch was removed.

Claim was skipped at the host's direction after this refusal; the issue remains unassigned and untriaged:

```text
✗ Error: #1615 is parentless and still Untriaged 📥, and a claim moves it off the entry Status, so Standalone 📍 would be written by nobody's judgement.
Review the open trackers, projects, and slices with ghb work, then take one of the two moves:
  home it   ghb issue edit #1615 --parent ISSUE --no-relationship   — use the truthful relationship flag
  judge it  ghb issue claim #1615 --standalone    — records independence from the other open work
```

### Close conditions

- [x] **Children:** no `T3CODE_DESKTOP_*` values

## Verification

- [x] Focused tests: 17 passed, 0 failed

`vp test run apps/server/src/provider/providerSessionEnvironment.fork.test.ts apps/server/src/provider/providerSessionEnvironment.test.ts` → exit 0

The extended test covers current launcher keys, a future key with an empty value, case-insensitive matching, inherited session IDs, and preservation of PATH, credentials, and the non-prefix `T3CODE_DESKTOP` key.

- [x] Targeted typecheck: both packages passed

`vp run --filter @t3tools/provider-core --filter t3 typecheck` → exit 0

- [x] Targeted lint and formatting passed
- [x] Server production bundle passed

`vp run --filter t3 build:bundle` → exit 0

- [x] Fork gate: 762 script tests passed

`vp run fork:ci` → exit 0

## Grounding

**Claim:** with `T3CODE_DESKTOP_*` set on the server, its terminal and provider children see none.

- **Build:** local `ground/wave1` `e81b07cb04`
- **Contents:** heads of three wave-1 PRs
- **Server env:** two `T3CODE_DESKTOP_*` probe keys
- **Server environ:** both keys present
- **Plain shell:** `PPID` is the server; 0 keys
- **Claude turn:** Bash `env` reports `count=0 none`
- **Provider process environ:** 0 keys

![proof-1766.png](https://github.com/user-attachments/assets/2081b493-df3f-423c-a399-e5255a864bd7)

![k1-crop.png](https://github.com/user-attachments/assets/398000c6-81fb-4ae6-a686-f5b931e605fc)

**Not grounded:** Electron desktop placement and CDP debugging.
No server code reads `T3CODE_DESKTOP_*`; Electron keeps its own launcher environment.

Model/harness: gpt-6.1-sol / Pi.

## Fork trailers

Fork-Domain: upstream-fixes
Fork-Tier: bugfix
Fork-Upstreamable: no
Co-authored-by: donjor <[email protected]>
donjor added a commit that referenced this pull request Oct 24, 2026
#1766)

## Problem

Provider children inherit desktop placement and CDP settings from the development launcher.
Closes #1615 (`Closes #1615`).

## Change

Scrub every `T3CODE_DESKTOP_*` key at the existing server-start environment boundary, alongside inherited session IDs.
This covers adapters that re-inherit `process.env` and in-process SDKs; Electron retains its separate launcher environment.
Rename the helper and update its one startup call and existing test.

```ts
for (const key of Object.keys(environment)) {
  if (key.toUpperCase().startsWith("T3CODE_DESKTOP_")) {
    delete environment[key];
  }
}
```

## Scope and approval

Host-approved, focused fix for the existing launcher leak; no UI, wire contract, or provider-specific implementation.
The initial per-provider environment patch was removed.

Claim was skipped at the host's direction after this refusal; the issue remains unassigned and untriaged:

```text
✗ Error: #1615 is parentless and still Untriaged 📥, and a claim moves it off the entry Status, so Standalone 📍 would be written by nobody's judgement.
Review the open trackers, projects, and slices with ghb work, then take one of the two moves:
  home it   ghb issue edit #1615 --parent ISSUE --no-relationship   — use the truthful relationship flag
  judge it  ghb issue claim #1615 --standalone    — records independence from the other open work
```

### Close conditions

- [x] **Children:** no `T3CODE_DESKTOP_*` values

## Verification

- [x] Focused tests: 17 passed, 0 failed

`vp test run apps/server/src/provider/providerSessionEnvironment.fork.test.ts apps/server/src/provider/providerSessionEnvironment.test.ts` → exit 0

The extended test covers current launcher keys, a future key with an empty value, case-insensitive matching, inherited session IDs, and preservation of PATH, credentials, and the non-prefix `T3CODE_DESKTOP` key.

- [x] Targeted typecheck: both packages passed

`vp run --filter @t3tools/provider-core --filter t3 typecheck` → exit 0

- [x] Targeted lint and formatting passed
- [x] Server production bundle passed

`vp run --filter t3 build:bundle` → exit 0

- [x] Fork gate: 762 script tests passed

`vp run fork:ci` → exit 0

## Grounding

**Claim:** with `T3CODE_DESKTOP_*` set on the server, its terminal and provider children see none.

- **Build:** local `ground/wave1` `e81b07cb04`
- **Contents:** heads of three wave-1 PRs
- **Server env:** two `T3CODE_DESKTOP_*` probe keys
- **Server environ:** both keys present
- **Plain shell:** `PPID` is the server; 0 keys
- **Claude turn:** Bash `env` reports `count=0 none`
- **Provider process environ:** 0 keys

![proof-1766.png](https://github.com/user-attachments/assets/2081b493-df3f-423c-a399-e5255a864bd7)

![k1-crop.png](https://github.com/user-attachments/assets/398000c6-81fb-4ae6-a686-f5b931e605fc)

**Not grounded:** Electron desktop placement and CDP debugging.
No server code reads `T3CODE_DESKTOP_*`; Electron keeps its own launcher environment.

Model/harness: gpt-6.1-sol / Pi.

## Fork trailers

Fork-Domain: upstream-fixes
Fork-Tier: bugfix
Fork-Upstreamable: no
Co-authored-by: donjor <[email protected]>
donjor added a commit that referenced this pull request Oct 27, 2026
#1766)

## Problem

Provider children inherit desktop placement and CDP settings from the development launcher.
Closes #1615 (`Closes #1615`).

## Change

Scrub every `T3CODE_DESKTOP_*` key at the existing server-start environment boundary, alongside inherited session IDs.
This covers adapters that re-inherit `process.env` and in-process SDKs; Electron retains its separate launcher environment.
Rename the helper and update its one startup call and existing test.

```ts
for (const key of Object.keys(environment)) {
  if (key.toUpperCase().startsWith("T3CODE_DESKTOP_")) {
    delete environment[key];
  }
}
```

## Scope and approval

Host-approved, focused fix for the existing launcher leak; no UI, wire contract, or provider-specific implementation.
The initial per-provider environment patch was removed.

Claim was skipped at the host's direction after this refusal; the issue remains unassigned and untriaged:

```text
✗ Error: #1615 is parentless and still Untriaged 📥, and a claim moves it off the entry Status, so Standalone 📍 would be written by nobody's judgement.
Review the open trackers, projects, and slices with ghb work, then take one of the two moves:
  home it   ghb issue edit #1615 --parent ISSUE --no-relationship   — use the truthful relationship flag
  judge it  ghb issue claim #1615 --standalone    — records independence from the other open work
```

### Close conditions

- [x] **Children:** no `T3CODE_DESKTOP_*` values

## Verification

- [x] Focused tests: 17 passed, 0 failed

`vp test run apps/server/src/provider/providerSessionEnvironment.fork.test.ts apps/server/src/provider/providerSessionEnvironment.test.ts` → exit 0

The extended test covers current launcher keys, a future key with an empty value, case-insensitive matching, inherited session IDs, and preservation of PATH, credentials, and the non-prefix `T3CODE_DESKTOP` key.

- [x] Targeted typecheck: both packages passed

`vp run --filter @t3tools/provider-core --filter t3 typecheck` → exit 0

- [x] Targeted lint and formatting passed
- [x] Server production bundle passed

`vp run --filter t3 build:bundle` → exit 0

- [x] Fork gate: 762 script tests passed

`vp run fork:ci` → exit 0

## Grounding

**Claim:** with `T3CODE_DESKTOP_*` set on the server, its terminal and provider children see none.

- **Build:** local `ground/wave1` `e81b07cb04`
- **Contents:** heads of three wave-1 PRs
- **Server env:** two `T3CODE_DESKTOP_*` probe keys
- **Server environ:** both keys present
- **Plain shell:** `PPID` is the server; 0 keys
- **Claude turn:** Bash `env` reports `count=0 none`
- **Provider process environ:** 0 keys

![proof-1766.png](https://github.com/user-attachments/assets/2081b493-df3f-423c-a399-e5255a864bd7)

![k1-crop.png](https://github.com/user-attachments/assets/398000c6-81fb-4ae6-a686-f5b931e605fc)

**Not grounded:** Electron desktop placement and CDP debugging.
No server code reads `T3CODE_DESKTOP_*`; Electron keeps its own launcher environment.

Model/harness: gpt-6.1-sol / Pi.

## Fork trailers

Fork-Domain: upstream-fixes
Fork-Tier: bugfix
Fork-Upstreamable: no
Co-authored-by: donjor <[email protected]>
donjor added a commit that referenced this pull request Oct 27, 2026
#1766)

## Problem

Provider children inherit desktop placement and CDP settings from the development launcher.
Closes #1615 (`Closes #1615`).

## Change

Scrub every `T3CODE_DESKTOP_*` key at the existing server-start environment boundary, alongside inherited session IDs.
This covers adapters that re-inherit `process.env` and in-process SDKs; Electron retains its separate launcher environment.
Rename the helper and update its one startup call and existing test.

```ts
for (const key of Object.keys(environment)) {
  if (key.toUpperCase().startsWith("T3CODE_DESKTOP_")) {
    delete environment[key];
  }
}
```

## Scope and approval

Host-approved, focused fix for the existing launcher leak; no UI, wire contract, or provider-specific implementation.
The initial per-provider environment patch was removed.

Claim was skipped at the host's direction after this refusal; the issue remains unassigned and untriaged:

```text
✗ Error: #1615 is parentless and still Untriaged 📥, and a claim moves it off the entry Status, so Standalone 📍 would be written by nobody's judgement.
Review the open trackers, projects, and slices with ghb work, then take one of the two moves:
  home it   ghb issue edit #1615 --parent ISSUE --no-relationship   — use the truthful relationship flag
  judge it  ghb issue claim #1615 --standalone    — records independence from the other open work
```

### Close conditions

- [x] **Children:** no `T3CODE_DESKTOP_*` values

## Verification

- [x] Focused tests: 17 passed, 0 failed

`vp test run apps/server/src/provider/providerSessionEnvironment.fork.test.ts apps/server/src/provider/providerSessionEnvironment.test.ts` → exit 0

The extended test covers current launcher keys, a future key with an empty value, case-insensitive matching, inherited session IDs, and preservation of PATH, credentials, and the non-prefix `T3CODE_DESKTOP` key.

- [x] Targeted typecheck: both packages passed

`vp run --filter @t3tools/provider-core --filter t3 typecheck` → exit 0

- [x] Targeted lint and formatting passed
- [x] Server production bundle passed

`vp run --filter t3 build:bundle` → exit 0

- [x] Fork gate: 762 script tests passed

`vp run fork:ci` → exit 0

## Grounding

**Claim:** with `T3CODE_DESKTOP_*` set on the server, its terminal and provider children see none.

- **Build:** local `ground/wave1` `e81b07cb04`
- **Contents:** heads of three wave-1 PRs
- **Server env:** two `T3CODE_DESKTOP_*` probe keys
- **Server environ:** both keys present
- **Plain shell:** `PPID` is the server; 0 keys
- **Claude turn:** Bash `env` reports `count=0 none`
- **Provider process environ:** 0 keys

![proof-1766.png](https://github.com/user-attachments/assets/2081b493-df3f-423c-a399-e5255a864bd7)

![k1-crop.png](https://github.com/user-attachments/assets/398000c6-81fb-4ae6-a686-f5b931e605fc)

**Not grounded:** Electron desktop placement and CDP debugging.
No server code reads `T3CODE_DESKTOP_*`; Electron keeps its own launcher environment.

Model/harness: gpt-6.1-sol / Pi.

## Fork trailers

Fork-Domain: upstream-fixes
Fork-Tier: bugfix
Fork-Upstreamable: no
Co-authored-by: donjor <[email protected]>
rsi-software-agent Bot pushed a commit that referenced this pull request Oct 27, 2026
#1766)

## Problem

Provider children inherit desktop placement and CDP settings from the development launcher.
Closes #1615 (`Closes #1615`).

## Change

Scrub every `T3CODE_DESKTOP_*` key at the existing server-start environment boundary, alongside inherited session IDs.
This covers adapters that re-inherit `process.env` and in-process SDKs; Electron retains its separate launcher environment.
Rename the helper and update its one startup call and existing test.

```ts
for (const key of Object.keys(environment)) {
  if (key.toUpperCase().startsWith("T3CODE_DESKTOP_")) {
    delete environment[key];
  }
}
```

## Scope and approval

Host-approved, focused fix for the existing launcher leak; no UI, wire contract, or provider-specific implementation.
The initial per-provider environment patch was removed.

Claim was skipped at the host's direction after this refusal; the issue remains unassigned and untriaged:

```text
✗ Error: #1615 is parentless and still Untriaged 📥, and a claim moves it off the entry Status, so Standalone 📍 would be written by nobody's judgement.
Review the open trackers, projects, and slices with ghb work, then take one of the two moves:
  home it   ghb issue edit #1615 --parent ISSUE --no-relationship   — use the truthful relationship flag
  judge it  ghb issue claim #1615 --standalone    — records independence from the other open work
```

### Close conditions

- [x] **Children:** no `T3CODE_DESKTOP_*` values

## Verification

- [x] Focused tests: 17 passed, 0 failed

`vp test run apps/server/src/provider/providerSessionEnvironment.fork.test.ts apps/server/src/provider/providerSessionEnvironment.test.ts` → exit 0

The extended test covers current launcher keys, a future key with an empty value, case-insensitive matching, inherited session IDs, and preservation of PATH, credentials, and the non-prefix `T3CODE_DESKTOP` key.

- [x] Targeted typecheck: both packages passed

`vp run --filter @t3tools/provider-core --filter t3 typecheck` → exit 0

- [x] Targeted lint and formatting passed
- [x] Server production bundle passed

`vp run --filter t3 build:bundle` → exit 0

- [x] Fork gate: 762 script tests passed

`vp run fork:ci` → exit 0

## Grounding

**Claim:** with `T3CODE_DESKTOP_*` set on the server, its terminal and provider children see none.

- **Build:** local `ground/wave1` `e81b07cb04`
- **Contents:** heads of three wave-1 PRs
- **Server env:** two `T3CODE_DESKTOP_*` probe keys
- **Server environ:** both keys present
- **Plain shell:** `PPID` is the server; 0 keys
- **Claude turn:** Bash `env` reports `count=0 none`
- **Provider process environ:** 0 keys

![proof-1766.png](https://github.com/user-attachments/assets/2081b493-df3f-423c-a399-e5255a864bd7)

![k1-crop.png](https://github.com/user-attachments/assets/398000c6-81fb-4ae6-a686-f5b931e605fc)

**Not grounded:** Electron desktop placement and CDP debugging.
No server code reads `T3CODE_DESKTOP_*`; Electron keeps its own launcher environment.

Model/harness: gpt-6.1-sol / Pi.

## Fork trailers

Fork-Domain: upstream-fixes
Fork-Tier: bugfix
Fork-Upstreamable: no
Co-authored-by: donjor <[email protected]>
donjor added a commit that referenced this pull request Nov 6, 2026
#1766)

## Problem

Provider children inherit desktop placement and CDP settings from the development launcher.
Closes #1615 (`Closes #1615`).

## Change

Scrub every `T3CODE_DESKTOP_*` key at the existing server-start environment boundary, alongside inherited session IDs.
This covers adapters that re-inherit `process.env` and in-process SDKs; Electron retains its separate launcher environment.
Rename the helper and update its one startup call and existing test.

```ts
for (const key of Object.keys(environment)) {
  if (key.toUpperCase().startsWith("T3CODE_DESKTOP_")) {
    delete environment[key];
  }
}
```

## Scope and approval

Host-approved, focused fix for the existing launcher leak; no UI, wire contract, or provider-specific implementation.
The initial per-provider environment patch was removed.

Claim was skipped at the host's direction after this refusal; the issue remains unassigned and untriaged:

```text
✗ Error: #1615 is parentless and still Untriaged 📥, and a claim moves it off the entry Status, so Standalone 📍 would be written by nobody's judgement.
Review the open trackers, projects, and slices with ghb work, then take one of the two moves:
  home it   ghb issue edit #1615 --parent ISSUE --no-relationship   — use the truthful relationship flag
  judge it  ghb issue claim #1615 --standalone    — records independence from the other open work
```

### Close conditions

- [x] **Children:** no `T3CODE_DESKTOP_*` values

## Verification

- [x] Focused tests: 17 passed, 0 failed

`vp test run apps/server/src/provider/providerSessionEnvironment.fork.test.ts apps/server/src/provider/providerSessionEnvironment.test.ts` → exit 0

The extended test covers current launcher keys, a future key with an empty value, case-insensitive matching, inherited session IDs, and preservation of PATH, credentials, and the non-prefix `T3CODE_DESKTOP` key.

- [x] Targeted typecheck: both packages passed

`vp run --filter @t3tools/provider-core --filter t3 typecheck` → exit 0

- [x] Targeted lint and formatting passed
- [x] Server production bundle passed

`vp run --filter t3 build:bundle` → exit 0

- [x] Fork gate: 762 script tests passed

`vp run fork:ci` → exit 0

## Grounding

**Claim:** with `T3CODE_DESKTOP_*` set on the server, its terminal and provider children see none.

- **Build:** local `ground/wave1` `e81b07cb04`
- **Contents:** heads of three wave-1 PRs
- **Server env:** two `T3CODE_DESKTOP_*` probe keys
- **Server environ:** both keys present
- **Plain shell:** `PPID` is the server; 0 keys
- **Claude turn:** Bash `env` reports `count=0 none`
- **Provider process environ:** 0 keys

![proof-1766.png](https://github.com/user-attachments/assets/2081b493-df3f-423c-a399-e5255a864bd7)

![k1-crop.png](https://github.com/user-attachments/assets/398000c6-81fb-4ae6-a686-f5b931e605fc)

**Not grounded:** Electron desktop placement and CDP debugging.
No server code reads `T3CODE_DESKTOP_*`; Electron keeps its own launcher environment.

Model/harness: gpt-6.1-sol / Pi.

## Fork trailers

Fork-Domain: upstream-fixes
Fork-Tier: bugfix
Fork-Upstreamable: no
Co-authored-by: donjor <[email protected]>
rsi-software-agent Bot pushed a commit that referenced this pull request Nov 6, 2026
#1766)

## Problem

Provider children inherit desktop placement and CDP settings from the development launcher.
Closes #1615 (`Closes #1615`).

## Change

Scrub every `T3CODE_DESKTOP_*` key at the existing server-start environment boundary, alongside inherited session IDs.
This covers adapters that re-inherit `process.env` and in-process SDKs; Electron retains its separate launcher environment.
Rename the helper and update its one startup call and existing test.

```ts
for (const key of Object.keys(environment)) {
  if (key.toUpperCase().startsWith("T3CODE_DESKTOP_")) {
    delete environment[key];
  }
}
```

## Scope and approval

Host-approved, focused fix for the existing launcher leak; no UI, wire contract, or provider-specific implementation.
The initial per-provider environment patch was removed.

Claim was skipped at the host's direction after this refusal; the issue remains unassigned and untriaged:

```text
✗ Error: #1615 is parentless and still Untriaged 📥, and a claim moves it off the entry Status, so Standalone 📍 would be written by nobody's judgement.
Review the open trackers, projects, and slices with ghb work, then take one of the two moves:
  home it   ghb issue edit #1615 --parent ISSUE --no-relationship   — use the truthful relationship flag
  judge it  ghb issue claim #1615 --standalone    — records independence from the other open work
```

### Close conditions

- [x] **Children:** no `T3CODE_DESKTOP_*` values

## Verification

- [x] Focused tests: 17 passed, 0 failed

`vp test run apps/server/src/provider/providerSessionEnvironment.fork.test.ts apps/server/src/provider/providerSessionEnvironment.test.ts` → exit 0

The extended test covers current launcher keys, a future key with an empty value, case-insensitive matching, inherited session IDs, and preservation of PATH, credentials, and the non-prefix `T3CODE_DESKTOP` key.

- [x] Targeted typecheck: both packages passed

`vp run --filter @t3tools/provider-core --filter t3 typecheck` → exit 0

- [x] Targeted lint and formatting passed
- [x] Server production bundle passed

`vp run --filter t3 build:bundle` → exit 0

- [x] Fork gate: 762 script tests passed

`vp run fork:ci` → exit 0

## Grounding

**Claim:** with `T3CODE_DESKTOP_*` set on the server, its terminal and provider children see none.

- **Build:** local `ground/wave1` `e81b07cb04`
- **Contents:** heads of three wave-1 PRs
- **Server env:** two `T3CODE_DESKTOP_*` probe keys
- **Server environ:** both keys present
- **Plain shell:** `PPID` is the server; 0 keys
- **Claude turn:** Bash `env` reports `count=0 none`
- **Provider process environ:** 0 keys

![proof-1766.png](https://github.com/user-attachments/assets/2081b493-df3f-423c-a399-e5255a864bd7)

![k1-crop.png](https://github.com/user-attachments/assets/398000c6-81fb-4ae6-a686-f5b931e605fc)

**Not grounded:** Electron desktop placement and CDP debugging.
No server code reads `T3CODE_DESKTOP_*`; Electron keeps its own launcher environment.

Model/harness: gpt-6.1-sol / Pi.

## Fork trailers

Fork-Domain: upstream-fixes
Fork-Tier: bugfix
Fork-Upstreamable: no
Co-authored-by: donjor <[email protected]>
rsi-software-agent Bot pushed a commit that referenced this pull request Nov 6, 2026
#1766)

## Problem

Provider children inherit desktop placement and CDP settings from the development launcher.
Closes #1615 (`Closes #1615`).

## Change

Scrub every `T3CODE_DESKTOP_*` key at the existing server-start environment boundary, alongside inherited session IDs.
This covers adapters that re-inherit `process.env` and in-process SDKs; Electron retains its separate launcher environment.
Rename the helper and update its one startup call and existing test.

```ts
for (const key of Object.keys(environment)) {
  if (key.toUpperCase().startsWith("T3CODE_DESKTOP_")) {
    delete environment[key];
  }
}
```

## Scope and approval

Host-approved, focused fix for the existing launcher leak; no UI, wire contract, or provider-specific implementation.
The initial per-provider environment patch was removed.

Claim was skipped at the host's direction after this refusal; the issue remains unassigned and untriaged:

```text
✗ Error: #1615 is parentless and still Untriaged 📥, and a claim moves it off the entry Status, so Standalone 📍 would be written by nobody's judgement.
Review the open trackers, projects, and slices with ghb work, then take one of the two moves:
  home it   ghb issue edit #1615 --parent ISSUE --no-relationship   — use the truthful relationship flag
  judge it  ghb issue claim #1615 --standalone    — records independence from the other open work
```

### Close conditions

- [x] **Children:** no `T3CODE_DESKTOP_*` values

## Verification

- [x] Focused tests: 17 passed, 0 failed

`vp test run apps/server/src/provider/providerSessionEnvironment.fork.test.ts apps/server/src/provider/providerSessionEnvironment.test.ts` → exit 0

The extended test covers current launcher keys, a future key with an empty value, case-insensitive matching, inherited session IDs, and preservation of PATH, credentials, and the non-prefix `T3CODE_DESKTOP` key.

- [x] Targeted typecheck: both packages passed

`vp run --filter @t3tools/provider-core --filter t3 typecheck` → exit 0

- [x] Targeted lint and formatting passed
- [x] Server production bundle passed

`vp run --filter t3 build:bundle` → exit 0

- [x] Fork gate: 762 script tests passed

`vp run fork:ci` → exit 0

## Grounding

**Claim:** with `T3CODE_DESKTOP_*` set on the server, its terminal and provider children see none.

- **Build:** local `ground/wave1` `e81b07cb04`
- **Contents:** heads of three wave-1 PRs
- **Server env:** two `T3CODE_DESKTOP_*` probe keys
- **Server environ:** both keys present
- **Plain shell:** `PPID` is the server; 0 keys
- **Claude turn:** Bash `env` reports `count=0 none`
- **Provider process environ:** 0 keys

![proof-1766.png](https://github.com/user-attachments/assets/2081b493-df3f-423c-a399-e5255a864bd7)

![k1-crop.png](https://github.com/user-attachments/assets/398000c6-81fb-4ae6-a686-f5b931e605fc)

**Not grounded:** Electron desktop placement and CDP debugging.
No server code reads `T3CODE_DESKTOP_*`; Electron keeps its own launcher environment.

Model/harness: gpt-6.1-sol / Pi.

## Fork trailers

Fork-Domain: upstream-fixes
Fork-Tier: bugfix
Fork-Upstreamable: no
Co-authored-by: donjor <[email protected]>
rsi-software-agent Bot pushed a commit that referenced this pull request Nov 6, 2026
#1766)

## Problem

Provider children inherit desktop placement and CDP settings from the development launcher.
Closes #1615 (`Closes #1615`).

## Change

Scrub every `T3CODE_DESKTOP_*` key at the existing server-start environment boundary, alongside inherited session IDs.
This covers adapters that re-inherit `process.env` and in-process SDKs; Electron retains its separate launcher environment.
Rename the helper and update its one startup call and existing test.

```ts
for (const key of Object.keys(environment)) {
  if (key.toUpperCase().startsWith("T3CODE_DESKTOP_")) {
    delete environment[key];
  }
}
```

## Scope and approval

Host-approved, focused fix for the existing launcher leak; no UI, wire contract, or provider-specific implementation.
The initial per-provider environment patch was removed.

Claim was skipped at the host's direction after this refusal; the issue remains unassigned and untriaged:

```text
✗ Error: #1615 is parentless and still Untriaged 📥, and a claim moves it off the entry Status, so Standalone 📍 would be written by nobody's judgement.
Review the open trackers, projects, and slices with ghb work, then take one of the two moves:
  home it   ghb issue edit #1615 --parent ISSUE --no-relationship   — use the truthful relationship flag
  judge it  ghb issue claim #1615 --standalone    — records independence from the other open work
```

### Close conditions

- [x] **Children:** no `T3CODE_DESKTOP_*` values

## Verification

- [x] Focused tests: 17 passed, 0 failed

`vp test run apps/server/src/provider/providerSessionEnvironment.fork.test.ts apps/server/src/provider/providerSessionEnvironment.test.ts` → exit 0

The extended test covers current launcher keys, a future key with an empty value, case-insensitive matching, inherited session IDs, and preservation of PATH, credentials, and the non-prefix `T3CODE_DESKTOP` key.

- [x] Targeted typecheck: both packages passed

`vp run --filter @t3tools/provider-core --filter t3 typecheck` → exit 0

- [x] Targeted lint and formatting passed
- [x] Server production bundle passed

`vp run --filter t3 build:bundle` → exit 0

- [x] Fork gate: 762 script tests passed

`vp run fork:ci` → exit 0

## Grounding

**Claim:** with `T3CODE_DESKTOP_*` set on the server, its terminal and provider children see none.

- **Build:** local `ground/wave1` `e81b07cb04`
- **Contents:** heads of three wave-1 PRs
- **Server env:** two `T3CODE_DESKTOP_*` probe keys
- **Server environ:** both keys present
- **Plain shell:** `PPID` is the server; 0 keys
- **Claude turn:** Bash `env` reports `count=0 none`
- **Provider process environ:** 0 keys

![proof-1766.png](https://github.com/user-attachments/assets/2081b493-df3f-423c-a399-e5255a864bd7)

![k1-crop.png](https://github.com/user-attachments/assets/398000c6-81fb-4ae6-a686-f5b931e605fc)

**Not grounded:** Electron desktop placement and CDP debugging.
No server code reads `T3CODE_DESKTOP_*`; Electron keeps its own launcher environment.

Model/harness: gpt-6.1-sol / Pi.

## Fork trailers

Fork-Domain: upstream-fixes
Fork-Tier: bugfix
Fork-Upstreamable: no
Co-authored-by: donjor <[email protected]>
rsi-software-agent Bot pushed a commit that referenced this pull request Nov 6, 2026
#1766)

## Problem

Provider children inherit desktop placement and CDP settings from the development launcher.
Closes #1615 (`Closes #1615`).

## Change

Scrub every `T3CODE_DESKTOP_*` key at the existing server-start environment boundary, alongside inherited session IDs.
This covers adapters that re-inherit `process.env` and in-process SDKs; Electron retains its separate launcher environment.
Rename the helper and update its one startup call and existing test.

```ts
for (const key of Object.keys(environment)) {
  if (key.toUpperCase().startsWith("T3CODE_DESKTOP_")) {
    delete environment[key];
  }
}
```

## Scope and approval

Host-approved, focused fix for the existing launcher leak; no UI, wire contract, or provider-specific implementation.
The initial per-provider environment patch was removed.

Claim was skipped at the host's direction after this refusal; the issue remains unassigned and untriaged:

```text
✗ Error: #1615 is parentless and still Untriaged 📥, and a claim moves it off the entry Status, so Standalone 📍 would be written by nobody's judgement.
Review the open trackers, projects, and slices with ghb work, then take one of the two moves:
  home it   ghb issue edit #1615 --parent ISSUE --no-relationship   — use the truthful relationship flag
  judge it  ghb issue claim #1615 --standalone    — records independence from the other open work
```

### Close conditions

- [x] **Children:** no `T3CODE_DESKTOP_*` values

## Verification

- [x] Focused tests: 17 passed, 0 failed

`vp test run apps/server/src/provider/providerSessionEnvironment.fork.test.ts apps/server/src/provider/providerSessionEnvironment.test.ts` → exit 0

The extended test covers current launcher keys, a future key with an empty value, case-insensitive matching, inherited session IDs, and preservation of PATH, credentials, and the non-prefix `T3CODE_DESKTOP` key.

- [x] Targeted typecheck: both packages passed

`vp run --filter @t3tools/provider-core --filter t3 typecheck` → exit 0

- [x] Targeted lint and formatting passed
- [x] Server production bundle passed

`vp run --filter t3 build:bundle` → exit 0

- [x] Fork gate: 762 script tests passed

`vp run fork:ci` → exit 0

## Grounding

**Claim:** with `T3CODE_DESKTOP_*` set on the server, its terminal and provider children see none.

- **Build:** local `ground/wave1` `e81b07cb04`
- **Contents:** heads of three wave-1 PRs
- **Server env:** two `T3CODE_DESKTOP_*` probe keys
- **Server environ:** both keys present
- **Plain shell:** `PPID` is the server; 0 keys
- **Claude turn:** Bash `env` reports `count=0 none`
- **Provider process environ:** 0 keys

![proof-1766.png](https://github.com/user-attachments/assets/2081b493-df3f-423c-a399-e5255a864bd7)

![k1-crop.png](https://github.com/user-attachments/assets/398000c6-81fb-4ae6-a686-f5b931e605fc)

**Not grounded:** Electron desktop placement and CDP debugging.
No server code reads `T3CODE_DESKTOP_*`; Electron keeps its own launcher environment.

Model/harness: gpt-6.1-sol / Pi.

## Fork trailers

Fork-Domain: upstream-fixes
Fork-Tier: bugfix
Fork-Upstreamable: no
Co-authored-by: donjor <[email protected]>
rsi-software-agent Bot pushed a commit that referenced this pull request Nov 6, 2026
#1766)

## Problem

Provider children inherit desktop placement and CDP settings from the development launcher.
Closes #1615 (`Closes #1615`).

## Change

Scrub every `T3CODE_DESKTOP_*` key at the existing server-start environment boundary, alongside inherited session IDs.
This covers adapters that re-inherit `process.env` and in-process SDKs; Electron retains its separate launcher environment.
Rename the helper and update its one startup call and existing test.

```ts
for (const key of Object.keys(environment)) {
  if (key.toUpperCase().startsWith("T3CODE_DESKTOP_")) {
    delete environment[key];
  }
}
```

## Scope and approval

Host-approved, focused fix for the existing launcher leak; no UI, wire contract, or provider-specific implementation.
The initial per-provider environment patch was removed.

Claim was skipped at the host's direction after this refusal; the issue remains unassigned and untriaged:

```text
✗ Error: #1615 is parentless and still Untriaged 📥, and a claim moves it off the entry Status, so Standalone 📍 would be written by nobody's judgement.
Review the open trackers, projects, and slices with ghb work, then take one of the two moves:
  home it   ghb issue edit #1615 --parent ISSUE --no-relationship   — use the truthful relationship flag
  judge it  ghb issue claim #1615 --standalone    — records independence from the other open work
```

### Close conditions

- [x] **Children:** no `T3CODE_DESKTOP_*` values

## Verification

- [x] Focused tests: 17 passed, 0 failed

`vp test run apps/server/src/provider/providerSessionEnvironment.fork.test.ts apps/server/src/provider/providerSessionEnvironment.test.ts` → exit 0

The extended test covers current launcher keys, a future key with an empty value, case-insensitive matching, inherited session IDs, and preservation of PATH, credentials, and the non-prefix `T3CODE_DESKTOP` key.

- [x] Targeted typecheck: both packages passed

`vp run --filter @t3tools/provider-core --filter t3 typecheck` → exit 0

- [x] Targeted lint and formatting passed
- [x] Server production bundle passed

`vp run --filter t3 build:bundle` → exit 0

- [x] Fork gate: 762 script tests passed

`vp run fork:ci` → exit 0

## Grounding

**Claim:** with `T3CODE_DESKTOP_*` set on the server, its terminal and provider children see none.

- **Build:** local `ground/wave1` `e81b07cb04`
- **Contents:** heads of three wave-1 PRs
- **Server env:** two `T3CODE_DESKTOP_*` probe keys
- **Server environ:** both keys present
- **Plain shell:** `PPID` is the server; 0 keys
- **Claude turn:** Bash `env` reports `count=0 none`
- **Provider process environ:** 0 keys

![proof-1766.png](https://github.com/user-attachments/assets/2081b493-df3f-423c-a399-e5255a864bd7)

![k1-crop.png](https://github.com/user-attachments/assets/398000c6-81fb-4ae6-a686-f5b931e605fc)

**Not grounded:** Electron desktop placement and CDP debugging.
No server code reads `T3CODE_DESKTOP_*`; Electron keeps its own launcher environment.

Model/harness: gpt-6.1-sol / Pi.

## Fork trailers

Fork-Domain: upstream-fixes
Fork-Tier: bugfix
Fork-Upstreamable: no
Co-authored-by: donjor <[email protected]>
rsi-software-agent Bot pushed a commit that referenced this pull request Nov 6, 2026
#1766)

## Problem

Provider children inherit desktop placement and CDP settings from the development launcher.
Closes #1615 (`Closes #1615`).

## Change

Scrub every `T3CODE_DESKTOP_*` key at the existing server-start environment boundary, alongside inherited session IDs.
This covers adapters that re-inherit `process.env` and in-process SDKs; Electron retains its separate launcher environment.
Rename the helper and update its one startup call and existing test.

```ts
for (const key of Object.keys(environment)) {
  if (key.toUpperCase().startsWith("T3CODE_DESKTOP_")) {
    delete environment[key];
  }
}
```

## Scope and approval

Host-approved, focused fix for the existing launcher leak; no UI, wire contract, or provider-specific implementation.
The initial per-provider environment patch was removed.

Claim was skipped at the host's direction after this refusal; the issue remains unassigned and untriaged:

```text
✗ Error: #1615 is parentless and still Untriaged 📥, and a claim moves it off the entry Status, so Standalone 📍 would be written by nobody's judgement.
Review the open trackers, projects, and slices with ghb work, then take one of the two moves:
  home it   ghb issue edit #1615 --parent ISSUE --no-relationship   — use the truthful relationship flag
  judge it  ghb issue claim #1615 --standalone    — records independence from the other open work
```

### Close conditions

- [x] **Children:** no `T3CODE_DESKTOP_*` values

## Verification

- [x] Focused tests: 17 passed, 0 failed

`vp test run apps/server/src/provider/providerSessionEnvironment.fork.test.ts apps/server/src/provider/providerSessionEnvironment.test.ts` → exit 0

The extended test covers current launcher keys, a future key with an empty value, case-insensitive matching, inherited session IDs, and preservation of PATH, credentials, and the non-prefix `T3CODE_DESKTOP` key.

- [x] Targeted typecheck: both packages passed

`vp run --filter @t3tools/provider-core --filter t3 typecheck` → exit 0

- [x] Targeted lint and formatting passed
- [x] Server production bundle passed

`vp run --filter t3 build:bundle` → exit 0

- [x] Fork gate: 762 script tests passed

`vp run fork:ci` → exit 0

## Grounding

**Claim:** with `T3CODE_DESKTOP_*` set on the server, its terminal and provider children see none.

- **Build:** local `ground/wave1` `e81b07cb04`
- **Contents:** heads of three wave-1 PRs
- **Server env:** two `T3CODE_DESKTOP_*` probe keys
- **Server environ:** both keys present
- **Plain shell:** `PPID` is the server; 0 keys
- **Claude turn:** Bash `env` reports `count=0 none`
- **Provider process environ:** 0 keys

![proof-1766.png](https://github.com/user-attachments/assets/2081b493-df3f-423c-a399-e5255a864bd7)

![k1-crop.png](https://github.com/user-attachments/assets/398000c6-81fb-4ae6-a686-f5b931e605fc)

**Not grounded:** Electron desktop placement and CDP debugging.
No server code reads `T3CODE_DESKTOP_*`; Electron keeps its own launcher environment.

Model/harness: gpt-6.1-sol / Pi.

## Fork trailers

Fork-Domain: upstream-fixes
Fork-Tier: bugfix
Fork-Upstreamable: no
Co-authored-by: donjor <[email protected]>
rsi-software-agent Bot pushed a commit that referenced this pull request Nov 7, 2026
#1766)

## Problem

Provider children inherit desktop placement and CDP settings from the development launcher.
Closes #1615 (`Closes #1615`).

## Change

Scrub every `T3CODE_DESKTOP_*` key at the existing server-start environment boundary, alongside inherited session IDs.
This covers adapters that re-inherit `process.env` and in-process SDKs; Electron retains its separate launcher environment.
Rename the helper and update its one startup call and existing test.

```ts
for (const key of Object.keys(environment)) {
  if (key.toUpperCase().startsWith("T3CODE_DESKTOP_")) {
    delete environment[key];
  }
}
```

## Scope and approval

Host-approved, focused fix for the existing launcher leak; no UI, wire contract, or provider-specific implementation.
The initial per-provider environment patch was removed.

Claim was skipped at the host's direction after this refusal; the issue remains unassigned and untriaged:

```text
✗ Error: #1615 is parentless and still Untriaged 📥, and a claim moves it off the entry Status, so Standalone 📍 would be written by nobody's judgement.
Review the open trackers, projects, and slices with ghb work, then take one of the two moves:
  home it   ghb issue edit #1615 --parent ISSUE --no-relationship   — use the truthful relationship flag
  judge it  ghb issue claim #1615 --standalone    — records independence from the other open work
```

### Close conditions

- [x] **Children:** no `T3CODE_DESKTOP_*` values

## Verification

- [x] Focused tests: 17 passed, 0 failed

`vp test run apps/server/src/provider/providerSessionEnvironment.fork.test.ts apps/server/src/provider/providerSessionEnvironment.test.ts` → exit 0

The extended test covers current launcher keys, a future key with an empty value, case-insensitive matching, inherited session IDs, and preservation of PATH, credentials, and the non-prefix `T3CODE_DESKTOP` key.

- [x] Targeted typecheck: both packages passed

`vp run --filter @t3tools/provider-core --filter t3 typecheck` → exit 0

- [x] Targeted lint and formatting passed
- [x] Server production bundle passed

`vp run --filter t3 build:bundle` → exit 0

- [x] Fork gate: 762 script tests passed

`vp run fork:ci` → exit 0

## Grounding

**Claim:** with `T3CODE_DESKTOP_*` set on the server, its terminal and provider children see none.

- **Build:** local `ground/wave1` `e81b07cb04`
- **Contents:** heads of three wave-1 PRs
- **Server env:** two `T3CODE_DESKTOP_*` probe keys
- **Server environ:** both keys present
- **Plain shell:** `PPID` is the server; 0 keys
- **Claude turn:** Bash `env` reports `count=0 none`
- **Provider process environ:** 0 keys

![proof-1766.png](https://github.com/user-attachments/assets/2081b493-df3f-423c-a399-e5255a864bd7)

![k1-crop.png](https://github.com/user-attachments/assets/398000c6-81fb-4ae6-a686-f5b931e605fc)

**Not grounded:** Electron desktop placement and CDP debugging.
No server code reads `T3CODE_DESKTOP_*`; Electron keeps its own launcher environment.

Model/harness: gpt-6.1-sol / Pi.

## Fork trailers

Fork-Domain: upstream-fixes
Fork-Tier: bugfix
Fork-Upstreamable: no
Co-authored-by: donjor <[email protected]>
rsi-software-agent Bot pushed a commit that referenced this pull request Nov 7, 2026
#1766)

## Problem

Provider children inherit desktop placement and CDP settings from the development launcher.
Closes #1615 (`Closes #1615`).

## Change

Scrub every `T3CODE_DESKTOP_*` key at the existing server-start environment boundary, alongside inherited session IDs.
This covers adapters that re-inherit `process.env` and in-process SDKs; Electron retains its separate launcher environment.
Rename the helper and update its one startup call and existing test.

```ts
for (const key of Object.keys(environment)) {
  if (key.toUpperCase().startsWith("T3CODE_DESKTOP_")) {
    delete environment[key];
  }
}
```

## Scope and approval

Host-approved, focused fix for the existing launcher leak; no UI, wire contract, or provider-specific implementation.
The initial per-provider environment patch was removed.

Claim was skipped at the host's direction after this refusal; the issue remains unassigned and untriaged:

```text
✗ Error: #1615 is parentless and still Untriaged 📥, and a claim moves it off the entry Status, so Standalone 📍 would be written by nobody's judgement.
Review the open trackers, projects, and slices with ghb work, then take one of the two moves:
  home it   ghb issue edit #1615 --parent ISSUE --no-relationship   — use the truthful relationship flag
  judge it  ghb issue claim #1615 --standalone    — records independence from the other open work
```

### Close conditions

- [x] **Children:** no `T3CODE_DESKTOP_*` values

## Verification

- [x] Focused tests: 17 passed, 0 failed

`vp test run apps/server/src/provider/providerSessionEnvironment.fork.test.ts apps/server/src/provider/providerSessionEnvironment.test.ts` → exit 0

The extended test covers current launcher keys, a future key with an empty value, case-insensitive matching, inherited session IDs, and preservation of PATH, credentials, and the non-prefix `T3CODE_DESKTOP` key.

- [x] Targeted typecheck: both packages passed

`vp run --filter @t3tools/provider-core --filter t3 typecheck` → exit 0

- [x] Targeted lint and formatting passed
- [x] Server production bundle passed

`vp run --filter t3 build:bundle` → exit 0

- [x] Fork gate: 762 script tests passed

`vp run fork:ci` → exit 0

## Grounding

**Claim:** with `T3CODE_DESKTOP_*` set on the server, its terminal and provider children see none.

- **Build:** local `ground/wave1` `e81b07cb04`
- **Contents:** heads of three wave-1 PRs
- **Server env:** two `T3CODE_DESKTOP_*` probe keys
- **Server environ:** both keys present
- **Plain shell:** `PPID` is the server; 0 keys
- **Claude turn:** Bash `env` reports `count=0 none`
- **Provider process environ:** 0 keys

![proof-1766.png](https://github.com/user-attachments/assets/2081b493-df3f-423c-a399-e5255a864bd7)

![k1-crop.png](https://github.com/user-attachments/assets/398000c6-81fb-4ae6-a686-f5b931e605fc)

**Not grounded:** Electron desktop placement and CDP debugging.
No server code reads `T3CODE_DESKTOP_*`; Electron keeps its own launcher environment.

Model/harness: gpt-6.1-sol / Pi.

## Fork trailers

Fork-Domain: upstream-fixes
Fork-Tier: bugfix
Fork-Upstreamable: no
Co-authored-by: donjor <[email protected]>
rsi-software-agent Bot pushed a commit that referenced this pull request Nov 7, 2026
#1766)

## Problem

Provider children inherit desktop placement and CDP settings from the development launcher.
Closes #1615 (`Closes #1615`).

## Change

Scrub every `T3CODE_DESKTOP_*` key at the existing server-start environment boundary, alongside inherited session IDs.
This covers adapters that re-inherit `process.env` and in-process SDKs; Electron retains its separate launcher environment.
Rename the helper and update its one startup call and existing test.

```ts
for (const key of Object.keys(environment)) {
  if (key.toUpperCase().startsWith("T3CODE_DESKTOP_")) {
    delete environment[key];
  }
}
```

## Scope and approval

Host-approved, focused fix for the existing launcher leak; no UI, wire contract, or provider-specific implementation.
The initial per-provider environment patch was removed.

Claim was skipped at the host's direction after this refusal; the issue remains unassigned and untriaged:

```text
✗ Error: #1615 is parentless and still Untriaged 📥, and a claim moves it off the entry Status, so Standalone 📍 would be written by nobody's judgement.
Review the open trackers, projects, and slices with ghb work, then take one of the two moves:
  home it   ghb issue edit #1615 --parent ISSUE --no-relationship   — use the truthful relationship flag
  judge it  ghb issue claim #1615 --standalone    — records independence from the other open work
```

### Close conditions

- [x] **Children:** no `T3CODE_DESKTOP_*` values

## Verification

- [x] Focused tests: 17 passed, 0 failed

`vp test run apps/server/src/provider/providerSessionEnvironment.fork.test.ts apps/server/src/provider/providerSessionEnvironment.test.ts` → exit 0

The extended test covers current launcher keys, a future key with an empty value, case-insensitive matching, inherited session IDs, and preservation of PATH, credentials, and the non-prefix `T3CODE_DESKTOP` key.

- [x] Targeted typecheck: both packages passed

`vp run --filter @t3tools/provider-core --filter t3 typecheck` → exit 0

- [x] Targeted lint and formatting passed
- [x] Server production bundle passed

`vp run --filter t3 build:bundle` → exit 0

- [x] Fork gate: 762 script tests passed

`vp run fork:ci` → exit 0

## Grounding

**Claim:** with `T3CODE_DESKTOP_*` set on the server, its terminal and provider children see none.

- **Build:** local `ground/wave1` `e81b07cb04`
- **Contents:** heads of three wave-1 PRs
- **Server env:** two `T3CODE_DESKTOP_*` probe keys
- **Server environ:** both keys present
- **Plain shell:** `PPID` is the server; 0 keys
- **Claude turn:** Bash `env` reports `count=0 none`
- **Provider process environ:** 0 keys

![proof-1766.png](https://github.com/user-attachments/assets/2081b493-df3f-423c-a399-e5255a864bd7)

![k1-crop.png](https://github.com/user-attachments/assets/398000c6-81fb-4ae6-a686-f5b931e605fc)

**Not grounded:** Electron desktop placement and CDP debugging.
No server code reads `T3CODE_DESKTOP_*`; Electron keeps its own launcher environment.

Model/harness: gpt-6.1-sol / Pi.

## Fork trailers

Fork-Domain: upstream-fixes
Fork-Tier: bugfix
Fork-Upstreamable: no
Co-authored-by: donjor <[email protected]>
rsi-software-agent Bot pushed a commit that referenced this pull request Nov 8, 2026
#1766)

## Problem

Provider children inherit desktop placement and CDP settings from the development launcher.
Closes #1615 (`Closes #1615`).

## Change

Scrub every `T3CODE_DESKTOP_*` key at the existing server-start environment boundary, alongside inherited session IDs.
This covers adapters that re-inherit `process.env` and in-process SDKs; Electron retains its separate launcher environment.
Rename the helper and update its one startup call and existing test.

```ts
for (const key of Object.keys(environment)) {
  if (key.toUpperCase().startsWith("T3CODE_DESKTOP_")) {
    delete environment[key];
  }
}
```

## Scope and approval

Host-approved, focused fix for the existing launcher leak; no UI, wire contract, or provider-specific implementation.
The initial per-provider environment patch was removed.

Claim was skipped at the host's direction after this refusal; the issue remains unassigned and untriaged:

```text
✗ Error: #1615 is parentless and still Untriaged 📥, and a claim moves it off the entry Status, so Standalone 📍 would be written by nobody's judgement.
Review the open trackers, projects, and slices with ghb work, then take one of the two moves:
  home it   ghb issue edit #1615 --parent ISSUE --no-relationship   — use the truthful relationship flag
  judge it  ghb issue claim #1615 --standalone    — records independence from the other open work
```

### Close conditions

- [x] **Children:** no `T3CODE_DESKTOP_*` values

## Verification

- [x] Focused tests: 17 passed, 0 failed

`vp test run apps/server/src/provider/providerSessionEnvironment.fork.test.ts apps/server/src/provider/providerSessionEnvironment.test.ts` → exit 0

The extended test covers current launcher keys, a future key with an empty value, case-insensitive matching, inherited session IDs, and preservation of PATH, credentials, and the non-prefix `T3CODE_DESKTOP` key.

- [x] Targeted typecheck: both packages passed

`vp run --filter @t3tools/provider-core --filter t3 typecheck` → exit 0

- [x] Targeted lint and formatting passed
- [x] Server production bundle passed

`vp run --filter t3 build:bundle` → exit 0

- [x] Fork gate: 762 script tests passed

`vp run fork:ci` → exit 0

## Grounding

**Claim:** with `T3CODE_DESKTOP_*` set on the server, its terminal and provider children see none.

- **Build:** local `ground/wave1` `e81b07cb04`
- **Contents:** heads of three wave-1 PRs
- **Server env:** two `T3CODE_DESKTOP_*` probe keys
- **Server environ:** both keys present
- **Plain shell:** `PPID` is the server; 0 keys
- **Claude turn:** Bash `env` reports `count=0 none`
- **Provider process environ:** 0 keys

![proof-1766.png](https://github.com/user-attachments/assets/2081b493-df3f-423c-a399-e5255a864bd7)

![k1-crop.png](https://github.com/user-attachments/assets/398000c6-81fb-4ae6-a686-f5b931e605fc)

**Not grounded:** Electron desktop placement and CDP debugging.
No server code reads `T3CODE_DESKTOP_*`; Electron keeps its own launcher environment.

Model/harness: gpt-6.1-sol / Pi.

## Fork trailers

Fork-Domain: upstream-fixes
Fork-Tier: bugfix
Fork-Upstreamable: no
Co-authored-by: donjor <[email protected]>
rsi-software-agent Bot pushed a commit that referenced this pull request Nov 8, 2026
#1766)

## Problem

Provider children inherit desktop placement and CDP settings from the development launcher.
Closes #1615 (`Closes #1615`).

## Change

Scrub every `T3CODE_DESKTOP_*` key at the existing server-start environment boundary, alongside inherited session IDs.
This covers adapters that re-inherit `process.env` and in-process SDKs; Electron retains its separate launcher environment.
Rename the helper and update its one startup call and existing test.

```ts
for (const key of Object.keys(environment)) {
  if (key.toUpperCase().startsWith("T3CODE_DESKTOP_")) {
    delete environment[key];
  }
}
```

## Scope and approval

Host-approved, focused fix for the existing launcher leak; no UI, wire contract, or provider-specific implementation.
The initial per-provider environment patch was removed.

Claim was skipped at the host's direction after this refusal; the issue remains unassigned and untriaged:

```text
✗ Error: #1615 is parentless and still Untriaged 📥, and a claim moves it off the entry Status, so Standalone 📍 would be written by nobody's judgement.
Review the open trackers, projects, and slices with ghb work, then take one of the two moves:
  home it   ghb issue edit #1615 --parent ISSUE --no-relationship   — use the truthful relationship flag
  judge it  ghb issue claim #1615 --standalone    — records independence from the other open work
```

### Close conditions

- [x] **Children:** no `T3CODE_DESKTOP_*` values

## Verification

- [x] Focused tests: 17 passed, 0 failed

`vp test run apps/server/src/provider/providerSessionEnvironment.fork.test.ts apps/server/src/provider/providerSessionEnvironment.test.ts` → exit 0

The extended test covers current launcher keys, a future key with an empty value, case-insensitive matching, inherited session IDs, and preservation of PATH, credentials, and the non-prefix `T3CODE_DESKTOP` key.

- [x] Targeted typecheck: both packages passed

`vp run --filter @t3tools/provider-core --filter t3 typecheck` → exit 0

- [x] Targeted lint and formatting passed
- [x] Server production bundle passed

`vp run --filter t3 build:bundle` → exit 0

- [x] Fork gate: 762 script tests passed

`vp run fork:ci` → exit 0

## Grounding

**Claim:** with `T3CODE_DESKTOP_*` set on the server, its terminal and provider children see none.

- **Build:** local `ground/wave1` `e81b07cb04`
- **Contents:** heads of three wave-1 PRs
- **Server env:** two `T3CODE_DESKTOP_*` probe keys
- **Server environ:** both keys present
- **Plain shell:** `PPID` is the server; 0 keys
- **Claude turn:** Bash `env` reports `count=0 none`
- **Provider process environ:** 0 keys

![proof-1766.png](https://github.com/user-attachments/assets/2081b493-df3f-423c-a399-e5255a864bd7)

![k1-crop.png](https://github.com/user-attachments/assets/398000c6-81fb-4ae6-a686-f5b931e605fc)

**Not grounded:** Electron desktop placement and CDP debugging.
No server code reads `T3CODE_DESKTOP_*`; Electron keeps its own launcher environment.

Model/harness: gpt-6.1-sol / Pi.

## Fork trailers

Fork-Domain: upstream-fixes
Fork-Tier: bugfix
Fork-Upstreamable: no
Co-authored-by: donjor <[email protected]>
rsi-software-agent Bot pushed a commit that referenced this pull request Nov 9, 2026
#1766)

## Problem

Provider children inherit desktop placement and CDP settings from the development launcher.
Closes #1615 (`Closes #1615`).

## Change

Scrub every `T3CODE_DESKTOP_*` key at the existing server-start environment boundary, alongside inherited session IDs.
This covers adapters that re-inherit `process.env` and in-process SDKs; Electron retains its separate launcher environment.
Rename the helper and update its one startup call and existing test.

```ts
for (const key of Object.keys(environment)) {
  if (key.toUpperCase().startsWith("T3CODE_DESKTOP_")) {
    delete environment[key];
  }
}
```

## Scope and approval

Host-approved, focused fix for the existing launcher leak; no UI, wire contract, or provider-specific implementation.
The initial per-provider environment patch was removed.

Claim was skipped at the host's direction after this refusal; the issue remains unassigned and untriaged:

```text
✗ Error: #1615 is parentless and still Untriaged 📥, and a claim moves it off the entry Status, so Standalone 📍 would be written by nobody's judgement.
Review the open trackers, projects, and slices with ghb work, then take one of the two moves:
  home it   ghb issue edit #1615 --parent ISSUE --no-relationship   — use the truthful relationship flag
  judge it  ghb issue claim #1615 --standalone    — records independence from the other open work
```

### Close conditions

- [x] **Children:** no `T3CODE_DESKTOP_*` values

## Verification

- [x] Focused tests: 17 passed, 0 failed

`vp test run apps/server/src/provider/providerSessionEnvironment.fork.test.ts apps/server/src/provider/providerSessionEnvironment.test.ts` → exit 0

The extended test covers current launcher keys, a future key with an empty value, case-insensitive matching, inherited session IDs, and preservation of PATH, credentials, and the non-prefix `T3CODE_DESKTOP` key.

- [x] Targeted typecheck: both packages passed

`vp run --filter @t3tools/provider-core --filter t3 typecheck` → exit 0

- [x] Targeted lint and formatting passed
- [x] Server production bundle passed

`vp run --filter t3 build:bundle` → exit 0

- [x] Fork gate: 762 script tests passed

`vp run fork:ci` → exit 0

## Grounding

**Claim:** with `T3CODE_DESKTOP_*` set on the server, its terminal and provider children see none.

- **Build:** local `ground/wave1` `e81b07cb04`
- **Contents:** heads of three wave-1 PRs
- **Server env:** two `T3CODE_DESKTOP_*` probe keys
- **Server environ:** both keys present
- **Plain shell:** `PPID` is the server; 0 keys
- **Claude turn:** Bash `env` reports `count=0 none`
- **Provider process environ:** 0 keys

![proof-1766.png](https://github.com/user-attachments/assets/2081b493-df3f-423c-a399-e5255a864bd7)

![k1-crop.png](https://github.com/user-attachments/assets/398000c6-81fb-4ae6-a686-f5b931e605fc)

**Not grounded:** Electron desktop placement and CDP debugging.
No server code reads `T3CODE_DESKTOP_*`; Electron keeps its own launcher environment.

Model/harness: gpt-6.1-sol / Pi.

## Fork trailers

Fork-Domain: upstream-fixes
Fork-Tier: bugfix
Fork-Upstreamable: no
Co-authored-by: donjor <[email protected]>
donjor added a commit that referenced this pull request Nov 9, 2026
* fix(server): provider spawns drop another harness's identity

A provider subprocess inherited the app launcher's harness markers, so a
Codex thread started from a Claude-launched T3 Code carried `CLAUDECODE`
and `CLAUDE_CODE_SESSION_ID`, and tooling inside the thread attributed
Codex work to Claude.

`mergeProviderInstanceEnvironment` now takes the target driver kind and
removes every other provider's identity variables, keeping credentials
and `T3CODE_*` session identity. The two seams that recompose the child
environment from `process.env` scrub the same way, so a complete driver
environment cannot be undone by the spawner.

Closes #98

Fork-Domain: upstream-fixes
Fork-Tier: bugfix
Fork-Upstreamable: yes

* refactor(server): cursor probe reuses the cursor driver kind constant

Squashes:

- 856b4220938 fix(server): provider spawns drop another harness identity (#108) (#108) (#1595)
- 756fc0b6dbb fix(server): strip desktop launcher environment before providers start (#1766) (#1766)
- f582c3c3727 fix(upstream-fixes): agents no longer inherit the live server's port settings (#1828) (#1828)

Fork-Domain: upstream-fixes
Fork-Tier: bugfix
Fork-Upstreamable: no
Co-authored-by: donjor <[email protected]>
rsi-software-agent Bot pushed a commit that referenced this pull request Nov 9, 2026
* fix(server): provider spawns drop another harness's identity

A provider subprocess inherited the app launcher's harness markers, so a
Codex thread started from a Claude-launched T3 Code carried `CLAUDECODE`
and `CLAUDE_CODE_SESSION_ID`, and tooling inside the thread attributed
Codex work to Claude.

`mergeProviderInstanceEnvironment` now takes the target driver kind and
removes every other provider's identity variables, keeping credentials
and `T3CODE_*` session identity. The two seams that recompose the child
environment from `process.env` scrub the same way, so a complete driver
environment cannot be undone by the spawner.

Closes #98

Fork-Domain: upstream-fixes
Fork-Tier: bugfix
Fork-Upstreamable: yes

* refactor(server): cursor probe reuses the cursor driver kind constant

Squashes:

- 856b4220938 fix(server): provider spawns drop another harness identity (#108) (#108) (#1595)
- 756fc0b6dbb fix(server): strip desktop launcher environment before providers start (#1766) (#1766)
- f582c3c3727 fix(upstream-fixes): agents no longer inherit the live server's port settings (#1828) (#1828)

Fork-Domain: upstream-fixes
Fork-Tier: bugfix
Fork-Upstreamable: no
Co-authored-by: donjor <[email protected]>
rsi-software-agent Bot pushed a commit that referenced this pull request Nov 9, 2026
* fix(server): provider spawns drop another harness's identity

A provider subprocess inherited the app launcher's harness markers, so a
Codex thread started from a Claude-launched T3 Code carried `CLAUDECODE`
and `CLAUDE_CODE_SESSION_ID`, and tooling inside the thread attributed
Codex work to Claude.

`mergeProviderInstanceEnvironment` now takes the target driver kind and
removes every other provider's identity variables, keeping credentials
and `T3CODE_*` session identity. The two seams that recompose the child
environment from `process.env` scrub the same way, so a complete driver
environment cannot be undone by the spawner.

Closes #98

Fork-Domain: upstream-fixes
Fork-Tier: bugfix
Fork-Upstreamable: yes

* refactor(server): cursor probe reuses the cursor driver kind constant

Squashes:

- 856b4220938 fix(server): provider spawns drop another harness identity (#108) (#108) (#1595)
- 756fc0b6dbb fix(server): strip desktop launcher environment before providers start (#1766) (#1766)
- f582c3c3727 fix(upstream-fixes): agents no longer inherit the live server's port settings (#1828) (#1828)

Fork-Domain: upstream-fixes
Fork-Tier: bugfix
Fork-Upstreamable: no
Co-authored-by: donjor <[email protected]>
rsi-software-agent Bot pushed a commit that referenced this pull request Nov 9, 2026
* fix(server): provider spawns drop another harness's identity

A provider subprocess inherited the app launcher's harness markers, so a
Codex thread started from a Claude-launched T3 Code carried `CLAUDECODE`
and `CLAUDE_CODE_SESSION_ID`, and tooling inside the thread attributed
Codex work to Claude.

`mergeProviderInstanceEnvironment` now takes the target driver kind and
removes every other provider's identity variables, keeping credentials
and `T3CODE_*` session identity. The two seams that recompose the child
environment from `process.env` scrub the same way, so a complete driver
environment cannot be undone by the spawner.

Closes #98

Fork-Domain: upstream-fixes
Fork-Tier: bugfix
Fork-Upstreamable: yes

* refactor(server): cursor probe reuses the cursor driver kind constant

Squashes:

- 856b4220938 fix(server): provider spawns drop another harness identity (#108) (#108) (#1595)
- 756fc0b6dbb fix(server): strip desktop launcher environment before providers start (#1766) (#1766)
- f582c3c3727 fix(upstream-fixes): agents no longer inherit the live server's port settings (#1828) (#1828)

Fork-Domain: upstream-fixes
Fork-Tier: bugfix
Fork-Upstreamable: no
Co-authored-by: donjor <[email protected]>
rsi-software-agent Bot pushed a commit that referenced this pull request Nov 9, 2026
* fix(server): provider spawns drop another harness's identity

A provider subprocess inherited the app launcher's harness markers, so a
Codex thread started from a Claude-launched T3 Code carried `CLAUDECODE`
and `CLAUDE_CODE_SESSION_ID`, and tooling inside the thread attributed
Codex work to Claude.

`mergeProviderInstanceEnvironment` now takes the target driver kind and
removes every other provider's identity variables, keeping credentials
and `T3CODE_*` session identity. The two seams that recompose the child
environment from `process.env` scrub the same way, so a complete driver
environment cannot be undone by the spawner.

Closes #98

Fork-Domain: upstream-fixes
Fork-Tier: bugfix
Fork-Upstreamable: yes

* refactor(server): cursor probe reuses the cursor driver kind constant

Squashes:

- 856b4220938 fix(server): provider spawns drop another harness identity (#108) (#108) (#1595)
- 756fc0b6dbb fix(server): strip desktop launcher environment before providers start (#1766) (#1766)
- f582c3c3727 fix(upstream-fixes): agents no longer inherit the live server's port settings (#1828) (#1828)

Fork-Domain: upstream-fixes
Fork-Tier: bugfix
Fork-Upstreamable: no
Co-authored-by: donjor <[email protected]>
rsi-software-agent Bot pushed a commit that referenced this pull request Nov 10, 2026
* fix(server): provider spawns drop another harness's identity

A provider subprocess inherited the app launcher's harness markers, so a
Codex thread started from a Claude-launched T3 Code carried `CLAUDECODE`
and `CLAUDE_CODE_SESSION_ID`, and tooling inside the thread attributed
Codex work to Claude.

`mergeProviderInstanceEnvironment` now takes the target driver kind and
removes every other provider's identity variables, keeping credentials
and `T3CODE_*` session identity. The two seams that recompose the child
environment from `process.env` scrub the same way, so a complete driver
environment cannot be undone by the spawner.

Closes #98

Fork-Domain: upstream-fixes
Fork-Tier: bugfix
Fork-Upstreamable: yes

* refactor(server): cursor probe reuses the cursor driver kind constant

Squashes:

- 856b4220938 fix(server): provider spawns drop another harness identity (#108) (#108) (#1595)
- 756fc0b6dbb fix(server): strip desktop launcher environment before providers start (#1766) (#1766)
- f582c3c3727 fix(upstream-fixes): agents no longer inherit the live server's port settings (#1828) (#1828)

Fork-Domain: upstream-fixes
Fork-Tier: bugfix
Fork-Upstreamable: no
Co-authored-by: donjor <[email protected]>
rsi-software-agent Bot pushed a commit that referenced this pull request Nov 10, 2026
* fix(server): provider spawns drop another harness's identity

A provider subprocess inherited the app launcher's harness markers, so a
Codex thread started from a Claude-launched T3 Code carried `CLAUDECODE`
and `CLAUDE_CODE_SESSION_ID`, and tooling inside the thread attributed
Codex work to Claude.

`mergeProviderInstanceEnvironment` now takes the target driver kind and
removes every other provider's identity variables, keeping credentials
and `T3CODE_*` session identity. The two seams that recompose the child
environment from `process.env` scrub the same way, so a complete driver
environment cannot be undone by the spawner.

Closes #98

Fork-Domain: upstream-fixes
Fork-Tier: bugfix
Fork-Upstreamable: yes

* refactor(server): cursor probe reuses the cursor driver kind constant

Squashes:

- 856b4220938 fix(server): provider spawns drop another harness identity (#108) (#108) (#1595)
- 756fc0b6dbb fix(server): strip desktop launcher environment before providers start (#1766) (#1766)
- f582c3c3727 fix(upstream-fixes): agents no longer inherit the live server's port settings (#1828) (#1828)

Fork-Domain: upstream-fixes
Fork-Tier: bugfix
Fork-Upstreamable: no
Co-authored-by: donjor <[email protected]>
rsi-software-agent Bot pushed a commit that referenced this pull request Nov 10, 2026
* fix(server): provider spawns drop another harness's identity

A provider subprocess inherited the app launcher's harness markers, so a
Codex thread started from a Claude-launched T3 Code carried `CLAUDECODE`
and `CLAUDE_CODE_SESSION_ID`, and tooling inside the thread attributed
Codex work to Claude.

`mergeProviderInstanceEnvironment` now takes the target driver kind and
removes every other provider's identity variables, keeping credentials
and `T3CODE_*` session identity. The two seams that recompose the child
environment from `process.env` scrub the same way, so a complete driver
environment cannot be undone by the spawner.

Closes #98

Fork-Domain: upstream-fixes
Fork-Tier: bugfix
Fork-Upstreamable: yes

* refactor(server): cursor probe reuses the cursor driver kind constant

Squashes:

- 856b4220938 fix(server): provider spawns drop another harness identity (#108) (#108) (#1595)
- 756fc0b6dbb fix(server): strip desktop launcher environment before providers start (#1766) (#1766)
- f582c3c3727 fix(upstream-fixes): agents no longer inherit the live server's port settings (#1828) (#1828)

Fork-Domain: upstream-fixes
Fork-Tier: bugfix
Fork-Upstreamable: no
Co-authored-by: donjor <[email protected]>
rsi-software-agent Bot pushed a commit that referenced this pull request Nov 10, 2026
* fix(server): provider spawns drop another harness's identity

A provider subprocess inherited the app launcher's harness markers, so a
Codex thread started from a Claude-launched T3 Code carried `CLAUDECODE`
and `CLAUDE_CODE_SESSION_ID`, and tooling inside the thread attributed
Codex work to Claude.

`mergeProviderInstanceEnvironment` now takes the target driver kind and
removes every other provider's identity variables, keeping credentials
and `T3CODE_*` session identity. The two seams that recompose the child
environment from `process.env` scrub the same way, so a complete driver
environment cannot be undone by the spawner.

Closes #98

Fork-Domain: upstream-fixes
Fork-Tier: bugfix
Fork-Upstreamable: yes

* refactor(server): cursor probe reuses the cursor driver kind constant

Squashes:

- 856b4220938 fix(server): provider spawns drop another harness identity (#108) (#108) (#1595)
- 756fc0b6dbb fix(server): strip desktop launcher environment before providers start (#1766) (#1766)
- f582c3c3727 fix(upstream-fixes): agents no longer inherit the live server's port settings (#1828) (#1828)

Fork-Domain: upstream-fixes
Fork-Tier: bugfix
Fork-Upstreamable: no
Co-authored-by: donjor <[email protected]>
rsi-software-agent Bot pushed a commit that referenced this pull request Nov 10, 2026
* fix(server): provider spawns drop another harness's identity

A provider subprocess inherited the app launcher's harness markers, so a
Codex thread started from a Claude-launched T3 Code carried `CLAUDECODE`
and `CLAUDE_CODE_SESSION_ID`, and tooling inside the thread attributed
Codex work to Claude.

`mergeProviderInstanceEnvironment` now takes the target driver kind and
removes every other provider's identity variables, keeping credentials
and `T3CODE_*` session identity. The two seams that recompose the child
environment from `process.env` scrub the same way, so a complete driver
environment cannot be undone by the spawner.

Closes #98

Fork-Domain: upstream-fixes
Fork-Tier: bugfix
Fork-Upstreamable: yes

* refactor(server): cursor probe reuses the cursor driver kind constant

Squashes:

- 856b4220938 fix(server): provider spawns drop another harness identity (#108) (#108) (#1595)
- 756fc0b6dbb fix(server): strip desktop launcher environment before providers start (#1766) (#1766)
- f582c3c3727 fix(upstream-fixes): agents no longer inherit the live server's port settings (#1828) (#1828)

Fork-Domain: upstream-fixes
Fork-Tier: bugfix
Fork-Upstreamable: no
Co-authored-by: donjor <[email protected]>
rsi-software-agent Bot pushed a commit that referenced this pull request Nov 11, 2026
* fix(server): provider spawns drop another harness's identity

A provider subprocess inherited the app launcher's harness markers, so a
Codex thread started from a Claude-launched T3 Code carried `CLAUDECODE`
and `CLAUDE_CODE_SESSION_ID`, and tooling inside the thread attributed
Codex work to Claude.

`mergeProviderInstanceEnvironment` now takes the target driver kind and
removes every other provider's identity variables, keeping credentials
and `T3CODE_*` session identity. The two seams that recompose the child
environment from `process.env` scrub the same way, so a complete driver
environment cannot be undone by the spawner.

Closes #98

Fork-Domain: upstream-fixes
Fork-Tier: bugfix
Fork-Upstreamable: yes

* refactor(server): cursor probe reuses the cursor driver kind constant

Squashes:

- 856b4220938 fix(server): provider spawns drop another harness identity (#108) (#108) (#1595)
- 756fc0b6dbb fix(server): strip desktop launcher environment before providers start (#1766) (#1766)
- f582c3c3727 fix(upstream-fixes): agents no longer inherit the live server's port settings (#1828) (#1828)

Fork-Domain: upstream-fixes
Fork-Tier: bugfix
Fork-Upstreamable: no
Co-authored-by: donjor <[email protected]>
rsi-software-agent Bot pushed a commit that referenced this pull request Nov 11, 2026
* fix(server): provider spawns drop another harness's identity

A provider subprocess inherited the app launcher's harness markers, so a
Codex thread started from a Claude-launched T3 Code carried `CLAUDECODE`
and `CLAUDE_CODE_SESSION_ID`, and tooling inside the thread attributed
Codex work to Claude.

`mergeProviderInstanceEnvironment` now takes the target driver kind and
removes every other provider's identity variables, keeping credentials
and `T3CODE_*` session identity. The two seams that recompose the child
environment from `process.env` scrub the same way, so a complete driver
environment cannot be undone by the spawner.

Closes #98

Fork-Domain: upstream-fixes
Fork-Tier: bugfix
Fork-Upstreamable: yes

* refactor(server): cursor probe reuses the cursor driver kind constant

Squashes:

- 856b4220938 fix(server): provider spawns drop another harness identity (#108) (#108) (#1595)
- 756fc0b6dbb fix(server): strip desktop launcher environment before providers start (#1766) (#1766)
- f582c3c3727 fix(upstream-fixes): agents no longer inherit the live server's port settings (#1828) (#1828)

Fork-Domain: upstream-fixes
Fork-Tier: bugfix
Fork-Upstreamable: no
Co-authored-by: donjor <[email protected]>
rsi-software-agent Bot pushed a commit that referenced this pull request Nov 11, 2026
* fix(server): provider spawns drop another harness's identity

A provider subprocess inherited the app launcher's harness markers, so a
Codex thread started from a Claude-launched T3 Code carried `CLAUDECODE`
and `CLAUDE_CODE_SESSION_ID`, and tooling inside the thread attributed
Codex work to Claude.

`mergeProviderInstanceEnvironment` now takes the target driver kind and
removes every other provider's identity variables, keeping credentials
and `T3CODE_*` session identity. The two seams that recompose the child
environment from `process.env` scrub the same way, so a complete driver
environment cannot be undone by the spawner.

Closes #98

Fork-Domain: upstream-fixes
Fork-Tier: bugfix
Fork-Upstreamable: yes

* refactor(server): cursor probe reuses the cursor driver kind constant

Squashes:

- 856b4220938 fix(server): provider spawns drop another harness identity (#108) (#108) (#1595)
- 756fc0b6dbb fix(server): strip desktop launcher environment before providers start (#1766) (#1766)
- f582c3c3727 fix(upstream-fixes): agents no longer inherit the live server's port settings (#1828) (#1828)

Fork-Domain: upstream-fixes
Fork-Tier: bugfix
Fork-Upstreamable: no
Co-authored-by: donjor <[email protected]>
rsi-software-agent Bot pushed a commit that referenced this pull request Nov 11, 2026
* fix(server): provider spawns drop another harness's identity

A provider subprocess inherited the app launcher's harness markers, so a
Codex thread started from a Claude-launched T3 Code carried `CLAUDECODE`
and `CLAUDE_CODE_SESSION_ID`, and tooling inside the thread attributed
Codex work to Claude.

`mergeProviderInstanceEnvironment` now takes the target driver kind and
removes every other provider's identity variables, keeping credentials
and `T3CODE_*` session identity. The two seams that recompose the child
environment from `process.env` scrub the same way, so a complete driver
environment cannot be undone by the spawner.

Closes #98

Fork-Domain: upstream-fixes
Fork-Tier: bugfix
Fork-Upstreamable: yes

* refactor(server): cursor probe reuses the cursor driver kind constant

Squashes:

- 856b4220938 fix(server): provider spawns drop another harness identity (#108) (#108) (#1595)
- 756fc0b6dbb fix(server): strip desktop launcher environment before providers start (#1766) (#1766)
- f582c3c3727 fix(upstream-fixes): agents no longer inherit the live server's port settings (#1828) (#1828)

Fork-Domain: upstream-fixes
Fork-Tier: bugfix
Fork-Upstreamable: no
Co-authored-by: donjor <[email protected]>
rsi-software-agent Bot pushed a commit that referenced this pull request Nov 11, 2026
* fix(server): provider spawns drop another harness's identity

A provider subprocess inherited the app launcher's harness markers, so a
Codex thread started from a Claude-launched T3 Code carried `CLAUDECODE`
and `CLAUDE_CODE_SESSION_ID`, and tooling inside the thread attributed
Codex work to Claude.

`mergeProviderInstanceEnvironment` now takes the target driver kind and
removes every other provider's identity variables, keeping credentials
and `T3CODE_*` session identity. The two seams that recompose the child
environment from `process.env` scrub the same way, so a complete driver
environment cannot be undone by the spawner.

Closes #98

Fork-Domain: upstream-fixes
Fork-Tier: bugfix
Fork-Upstreamable: yes

* refactor(server): cursor probe reuses the cursor driver kind constant

Squashes:

- 856b4220938 fix(server): provider spawns drop another harness identity (#108) (#108) (#1595)
- 756fc0b6dbb fix(server): strip desktop launcher environment before providers start (#1766) (#1766)
- f582c3c3727 fix(upstream-fixes): agents no longer inherit the live server's port settings (#1828) (#1828)

Fork-Domain: upstream-fixes
Fork-Tier: bugfix
Fork-Upstreamable: no
Co-authored-by: donjor <[email protected]>
rsi-software-agent Bot pushed a commit that referenced this pull request Nov 11, 2026
* fix(server): provider spawns drop another harness's identity

A provider subprocess inherited the app launcher's harness markers, so a
Codex thread started from a Claude-launched T3 Code carried `CLAUDECODE`
and `CLAUDE_CODE_SESSION_ID`, and tooling inside the thread attributed
Codex work to Claude.

`mergeProviderInstanceEnvironment` now takes the target driver kind and
removes every other provider's identity variables, keeping credentials
and `T3CODE_*` session identity. The two seams that recompose the child
environment from `process.env` scrub the same way, so a complete driver
environment cannot be undone by the spawner.

Closes #98

Fork-Domain: upstream-fixes
Fork-Tier: bugfix
Fork-Upstreamable: yes

* refactor(server): cursor probe reuses the cursor driver kind constant

Squashes:

- 856b4220938 fix(server): provider spawns drop another harness identity (#108) (#108) (#1595)
- 756fc0b6dbb fix(server): strip desktop launcher environment before providers start (#1766) (#1766)
- f582c3c3727 fix(upstream-fixes): agents no longer inherit the live server's port settings (#1828) (#1828)

Fork-Domain: upstream-fixes
Fork-Tier: bugfix
Fork-Upstreamable: no
Co-authored-by: donjor <[email protected]>
rsi-software-agent Bot pushed a commit that referenced this pull request Nov 12, 2026
* fix(server): provider spawns drop another harness's identity

A provider subprocess inherited the app launcher's harness markers, so a
Codex thread started from a Claude-launched T3 Code carried `CLAUDECODE`
and `CLAUDE_CODE_SESSION_ID`, and tooling inside the thread attributed
Codex work to Claude.

`mergeProviderInstanceEnvironment` now takes the target driver kind and
removes every other provider's identity variables, keeping credentials
and `T3CODE_*` session identity. The two seams that recompose the child
environment from `process.env` scrub the same way, so a complete driver
environment cannot be undone by the spawner.

Closes #98

Fork-Domain: upstream-fixes
Fork-Tier: bugfix
Fork-Upstreamable: yes

* refactor(server): cursor probe reuses the cursor driver kind constant

Squashes:

- 856b4220938 fix(server): provider spawns drop another harness identity (#108) (#108) (#1595)
- 756fc0b6dbb fix(server): strip desktop launcher environment before providers start (#1766) (#1766)
- f582c3c3727 fix(upstream-fixes): agents no longer inherit the live server's port settings (#1828) (#1828)

Fork-Domain: upstream-fixes
Fork-Tier: bugfix
Fork-Upstreamable: no
Co-authored-by: donjor <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:S 10-29 effective changed lines (test files excluded in mixed PRs).

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Provider children inherit the dev launcher's T3CODE_DESKTOP_* [📥]

1 participant