• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

umputun / ralphex / 34295831892
86%

Build:
DEFAULT BRANCH: master
Ran 09 Sep 2026 12:38AM UTC
Jobs 1
Files 55
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

09 Sep 2026 12:37AM UTC coverage: 86.118% (+0.06%) from 86.054%
34295831892

push

github

web-flow
fix: strip all Claude Code session env vars from child processes (#430)

Stripping CLAUDECODE alone stopped being enough once Claude Code 2.1.x began
marking spawned processes with a family of per-session vars. Any one of them
left in the child env makes the spawned claude behave as a nested session: it
attaches to the parent's session plumbing and never writes its own transcript,
so a PTY wrapper like fya waits for output that never arrives and each turn
burns the full --turn-timeout (30m by default) having done no work and left no
diagnostic beyond the timeout itself.

Observed running ralphex from inside a Claude Code session on Claude Code
2.1.228: /proc/<pid>/environ on the fya child showed CLAUDECODE correctly
removed but CLAUDE_CODE_CHILD_SESSION, CLAUDE_CODE_SESSION_ID,
CLAUDE_CODE_MESSAGING_SOCKET, CLAUDE_CODE_BRIDGE_SESSION_ID and friends still
set. Iterations timed out at 30m each with no transcript written; relaunching
with the full set scrubbed produced a transcript in ~85s and normal progress.

Collect the markers in sessionEnvVars and strip them in both executors -
claudeChildEnv and the codex runner's childEnv have the same defect, and the
codex loop is reached in the same run. The list is explicit rather than a
CLAUDE_CODE_* prefix strip because user-set config vars share that prefix
(CLAUDE_CODE_USE_BEDROCK, _USE_VERTEX, _MAX_OUTPUT_TOKENS, _SUBAGENT_MODEL)
and must still reach the child; a test covers that.

The set is "every session-scoped marker" rather than a bisected minimal one -
which var trips the nested-session detection is Claude Code's business, and a
wrapper is better off dropping all of them, including any added later.


Claude-Session: https://claude.ai/code/session_01UhHLFUDbCTxtsg4zis4aP4

Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
Co-authored-by: Umputun <umputun@gmail.com>

6 of 6 new or added lines in 2 files covered. (100.0%)

4 existing lines in 1 file now uncovered.

8257 of 9588 relevant lines covered (86.12%)

226.62 hits per line

Coverage Regressions

Lines Coverage ∆ File
4
89.73
-1.37% pkg/web/session_manager.go
Jobs
ID Job ID Ran Files Coverage
1 34295831892.1 09 Sep 2026 12:38AM UTC 55
86.12
GitHub Action Run
Source Files on build 34295831892
  • Tree
  • List 55
  • Changed 5
  • Source Changed 0
  • Coverage Changed 5
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • 604f78c5 on github
  • Prev Build on master (#34146803591)
  • Next Build on master (#34296092563)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc