Problem
When Pilot talks to an attached OpenCode server over HTTP, it creates sessions in the server process cwd instead of the target project path.
Root Cause
OpenCode attached mode resolves the project directory from the x-opencode-directory header or directory query parameter, not from the legacy JSON path field in the POST /session body.
Verified against upstream OpenCode source:
packages/sdk/js/src/v2/client.ts
packages/opencode/src/server/routes/instance/middleware.ts
Impact
Pilot can execute tasks against the wrong repository even though ExecuteOptions.ProjectPath is set correctly.
Proposed Fix
Send X-OpenCode-Directory: <urlencoded project path> on both:
POST /session
POST /session/:id/message
Add regression coverage to assert the header is present on both requests.
Problem
When Pilot talks to an attached OpenCode server over HTTP, it creates sessions in the server process cwd instead of the target project path.
Root Cause
OpenCode attached mode resolves the project directory from the
x-opencode-directoryheader ordirectoryquery parameter, not from the legacy JSONpathfield in thePOST /sessionbody.Verified against upstream OpenCode source:
packages/sdk/js/src/v2/client.tspackages/opencode/src/server/routes/instance/middleware.tsImpact
Pilot can execute tasks against the wrong repository even though
ExecuteOptions.ProjectPathis set correctly.Proposed Fix
Send
X-OpenCode-Directory: <urlencoded project path>on both:POST /sessionPOST /session/:id/messageAdd regression coverage to assert the header is present on both requests.