openai / openai/codex

Validate workspace roots at task creation/resume; surface "working directory not found" instead of downstream spawn ENOENT

Open
#39,780 2 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

app bug computer-use mcp session
Dominant language
Rust
Stars
125k
Forks
19.4k
PR merge metrics
PR metrics pending

Description

Summary

A task rooted at a path that doesn't exist locally is created without warning. Every subsequent child-process spawn fails with ENOENT, which silently prevents the node_repl MCP server from starting — so the Computer Use plugin injects its SKILL.md but registers zero callable tools. The user sees "Computer Use isn't working" with no indication the working directory is the cause.

Mechanism

nonexistent task cwd
  -> child-process spawn returns ENOENT
    -> node_repl MCP server cannot start for that task
      -> Computer Use exposes SKILL.md but no callable tools

Repro

Register a local project whose root is another macOS user's home. Create a task in it. Invoke @Computer.

Observed:

  • CreateProcess: Rejected("Failed to create unified exec process: No such file or directory (os error 2)") for both /bin/bash and /bin/zsh
  • Failed to watch workspace root for git init cwd=... errorCode=ENOENT
  • Tool catalog logs omitting MCP server without an exact ready client server_name=node_repl

Control: an identical task under a valid local root passes all four checks — pwd, SKILL.md read, all three mcp__node_repl__js* tools registered, and a live sky.get_app_state({app:"Finder"}) capture. No reinstall, no permission change.

Why the error is misleading

No such file or directory reads as a missing binary. Both shells exist. The missing entity is the cwd, several layers removed from where the error surfaces.

Asks

  1. Validate the workspace root at task creation and resume; refuse or warn with working directory not found: <path>.
  2. When an MCP server fails to start, surface that in the task rather than silently omitting it from the tool catalog.
  3. Offer rebinding for tasks whose root is invalid, or state plainly that it isn't supported — cwd is written into the rollout at creation and never re-read, so affected tasks are permanently unusable for execution while retaining full history.

Related: #29438, #26026

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by tracing task creation and resume handling, then follow child-process spawning and MCP server startup for an invalid workspace root. Reproduce with a nonexistent cwd and compare it with a valid root; done means the invalid root and failed MCP startup are surfaced clearly, with rebinding behavior established.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
cli, devtools
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
52/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.