Skip to content

fix: PowerShell env var cleanup on Ctrl+C/crash - #8

Open
hobostay wants to merge 1 commit into
aattaran:mainfrom
hobostay:fix/powershell-env-cleanup
Open

fix: PowerShell env var cleanup on Ctrl+C/crash#8
hobostay wants to merge 1 commit into
aattaran:mainfrom
hobostay:fix/powershell-env-cleanup

Conversation

@hobostay

@hobostay hobostay commented May 4, 2026

Copy link
Copy Markdown

Summary

  • Wraps the regular launch path in try/finally to ensure env var cleanup always runs

Problem

The remote mode already used try/finally for env cleanup, but the regular launch mode did not. If the user presses Ctrl+C or claude crashes, the cleanup code after & claude @Args is skipped. This leaks sensitive env vars into the parent shell session, including ANTHROPIC_AUTH_TOKEN which contains the API key.

Test plan

  • Launch with deepclaude.ps1 -b ds, then Ctrl+C → env vars should be cleaned up
  • Normal exit still works and cleans up

🤖 Generated with Claude Code

The regular launch mode set env vars and cleaned them up after `claude`
exits, but if the user presses Ctrl+C or the process crashes, cleanup
is skipped and the env vars (including the API key in ANTHROPIC_AUTH_TOKEN)
leak into the parent shell session. Wrap in try/finally to match the
pattern already used by the remote mode.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
g-roliveira added a commit to g-roliveira/deepclaude that referenced this pull request Aug 6, 2026
…parity

Summary of fixes and features applied from aattaran/deepclaude
issues and PRs, plus original improvements:

Model coverage (Issue aattaran#39):
- Add claude-fable-5, claude-opus-5, claude-sonnet-5 to MODEL_REMAP
- Tier-based _default fallback (fable/opus/sonnet/haiku) so new
  Claude models degrade predictably instead of silently routing
  to the wrong backend
- Warning log when model is forwarded unmapped

Proxy resilience (PR aattaran#18):
- proxyRes error handler — upstream TCP reset mid-response no
  longer crashes the entire proxy process
- proxyReq error after headers-sent: destroy response instead of
  injecting JSON into the SSE stream (which corrupted the parser)

Thinking-block continuity (PR aattaran#24):
- Drop top-level thinking/context_management on non-Anthropic
  routes instead of stripping all thinking blocks from history
- Fixes DeepSeek 400: "content[].thinking must be passed back"

Proxy in normal mode (PR aattaran#9):
- Default launch now starts the proxy; cost tracking and live
  /switch work in all sessions, not just --remote
- Use ANTHROPIC_API_KEY instead of ANTHROPIC_AUTH_TOKEN so
  subscription OAuth tokens are handled correctly

Body size limit (PR aattaran#7):
- 50 MB cap on /v1/messages request body, returns 413

Forward unknown args to claude (Issue aattaran#25):
- Bash: -- separator support for explicit passthrough
- PowerShell: ValueFromRemainingArguments captures unknown flags

PowerShell parity (PR aattaran#5, aattaran#8):
- --switch/-s parameter with backend name normalization
- try/finally ensures proxy cleanup on Ctrl+C/crash

Model [1m] suffix:
- All model names include [1m] token window hint so Claude Code
  doesn't assume 200k context and auto-compact prematurely

Project documentation:
- CLAUDE.md with architecture overview, proxy routing, SSE
  normalization, model remapping, and development conventions
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant