{"record":{"id":"40584cef4fed0bef","repo":"github/copilot-sdk","slug":"builtinplugindirectories-must-contain-only-absolut","errorCode":null,"errorMessage":"builtinPluginDirectories must contain only absolute paths: ${path}","messagePattern":"builtinPluginDirectories must contain only absolute paths: (.+?)","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"nodejs/src/client.ts","lineNumber":660,"sourceCode":"                    \"(RuntimeConnection.forStdio/forTcp), not both. Prefer the connection-level env for \" +\n                    \"child-process transports.\"\n            );\n        }\n        if (conn.kind === \"tcp\" && conn.connectionToken !== undefined) {\n            if (typeof conn.connectionToken !== \"string\" || conn.connectionToken.length === 0) {\n                throw new Error(\"connectionToken must be a non-empty string\");\n            }\n        }\n\n        this.connectionConfig = conn;\n\n        if (options.sessionFs) {\n            this.validateSessionFsConfig(options.sessionFs);\n        }\n        if (options.builtinPluginDirectories) {\n            for (const path of options.builtinPluginDirectories) {\n                if (!isAbsolute(path)) {\n                    throw new Error(\n                        `builtinPluginDirectories must contain only absolute paths: ${path}`\n                    );\n                }\n            }\n            this.builtinPluginDirectories = [...options.builtinPluginDirectories];\n        }\n\n        // Pre-parse the URI host/port and mark as external if applicable.\n        if (conn.kind === \"uri\") {\n            const { host, port } = this.parseCliUrl(conn.url);\n            this.actualHost = host;\n            this.runtimePort = port;\n            this.isExternalServer = true;\n        } else if (conn.kind === \"parent-process\") {\n            this.isExternalServer = true;\n        }\n\n        // Effective TCP connection token: explicit, else auto-generated when we","sourceCodeStart":642,"sourceCodeEnd":678,"githubUrl":"https://github.com/github/copilot-sdk/blob/cd8cf15dc3f9e762615790aaed0a771a0f392755/nodejs/src/client.ts#L642-L678","documentation":"Constructor validation error: the builtinPluginDirectories option array contains a relative path. The client requires every entry to be absolute so plugin resolution is unambiguous regardless of the process's current working directory; '${path}' failed that check.","triggerScenarios":"Thrown at nodejs/src/client.ts:660 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Convert the offending path to an absolute path with path.resolve() or path.join(rootDir, p) before passing it in builtinPluginDirectories","Remove the relative entry if the plugin is not needed","If the path comes from user/config input, normalize it at load time: entries.map(p => path.isAbsolute(p) ? p : path.resolve(baseDir, p))"],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"cd8cf15dc3f9e762615790aaed0a771a0f392755","analyzedAt":"2026-09-09T18:32:31.973Z","contentChangedAt":"2026-09-09T18:32:31.973Z","schemaVersion":2},"datasetVersion":"2026-09-17T15:17:12.973Z"}