fix(server): enforce workspace directory via x-opencode-directory

This commit is contained in:
Shantur Rathore
2026-01-28 23:41:32 +00:00
parent ba61ab79e2
commit 37b7c1e53c

View File

@@ -380,6 +380,16 @@ async function proxyWorkspaceRequest(args: {
if (instanceAuthHeader) {
headers.authorization = instanceAuthHeader
}
// Enforce per-workspace directory scoping for all proxied OpenCode requests.
// OpenCode expects the *full* path; we send it via header to avoid query tampering.
const directory = workspace.path
const isNonASCII = /[^\x00-\x7F]/.test(directory)
const encodedDirectory = isNonASCII ? encodeURIComponent(directory) : directory
// Overwrite any client-provided value (case-insensitive headers are normalized by Node).
;(headers as Record<string, unknown>)["x-opencode-directory"] = encodedDirectory
return headers
},
onError: (proxyReply, { error }) => {