Skip to content

v0.13.0 — Fix Claude worker .claude/ sensitive prompt hang

Choose a tag to compare

@kyjin kyjin released this 01 May 01:20
· 350 commits to main since this release

BREAKING

  • Project-local runtime moved: <project>/.claude/ralph-desk/ → <project>/.rlp-desk/
    • init mode: auto-migrates legacy directory with atomic lockfile
    • run mode: refuses with non-zero exit + prints mv .claude/ralph-desk .rlp-desk instructions to protect in-flight campaigns
    • Both legacy + new directories present → init exits 1 with clear conflict message

NEW

  • RLP_DESK_RUNTIME_DIR env override: pin runtime dir to a custom relative path. Future platform changes that re-trigger sensitive policy can be dodged without a release.
  • Claude + tmux warning: node run.mjs run --mode tmux --worker-model sonnet now prints a stderr warning suggesting gpt-5.5:high (codex) or --mode agent. Suppress with RLP_DESK_QUIET_WARNINGS=1.
  • Permission-prompt early-detect: when a Claude Code self-modification prompt appears in worker pane stdout, the leader writes BLOCKED with failure_category=permission_prompt + suggested_action=switch_worker_to_codex_or_use_agent_mode within seconds (previously hung for the full pollForSignal timeout). New BLOCK_TAGS.PERMISSION_PROMPT constant is exported for wrapper consumers.

FIX

  • Claude worker + tmux sentinel write hang: root cause was Claude Code's hardcoded sensitive-file policy on .claude/* paths, which --dangerously-skip-permissions does not bypass. Moving the runtime out of .claude/ removes the trigger entirely.

Migration

Scenario Action
Active campaign in .claude/ralph-desk/ Run mode prints mv .claude/ralph-desk .rlp-desk, then re-run
Fresh init Auto-migrated by node run.mjs init (atomic, with lockfile)
Pinned legacy path needed Set RLP_DESK_RUNTIME_DIR=.claude/ralph-desk (not recommended; reintroduces the hang)

Roadmap

Legacy .claude/ralph-desk/ detection logic will be removed in 1.0.0 (deprecation cycle).