can1357/oh-my-pi · error · ToolError
No debugger adapter available. Installed adapters: ${getConf
Error message
No debugger adapter available. Installed adapters: ${getConfiguredAdapters(commandCwd)} What it means
No debugger adapter could be selected at all for the launch: selectLaunchAdapter returned kind="none" because no adapter applies to the program/language and none of the installed adapters were requested or eligible. The error lists the adapters that are actually configured in the workspace via getConfiguredAdapters so the caller can pick a valid one.
Source
Thrown at packages/coding-agent/src/tools/debug.ts:750
const timeoutSec = clampTimeout("debug", params.timeout, this.session.settings.get("tools.maxTimeout"));
const timeoutSignal = AbortSignal.timeout(timeoutSec * 1000);
const combinedSignal = signal ? AbortSignal.any([signal, timeoutSignal]) : timeoutSignal;
const details: DebugToolDetails = { action: params.action, success: true };
const result = toolResult(details);
switch (params.action) {
case "launch": {
if (!params.program) {
throw new ToolError("program is required for launch");
}
const commandCwd = params.cwd ? resolveToCwd(params.cwd, this.session.cwd) : this.session.cwd;
const program = resolveToCwd(params.program, commandCwd);
const programKind = await classifyLaunchProgram(program);
const selection = selectLaunchAdapter(program, commandCwd, params.adapter, programKind);
if (selection.kind === "unavailable") {
throw new ToolError(formatAdapterUnavailable(selection.adapterName, selection.command, commandCwd));
}
if (selection.kind === "none") {
throw new ToolError(
`No debugger adapter available. Installed adapters: ${getConfiguredAdapters(commandCwd)}`,
);
}
const { adapter } = selection;
validateLaunchProgram(program, commandCwd, programKind, adapter);
const extraLaunchArguments = resolveLaunchOverrides(adapter, program, programKind);
const snapshot = await dapSessionManager.launch(
{ adapter, program, args: params.args, cwd: commandCwd, extraLaunchArguments },
combinedSignal,
timeoutSec * 1000,
);
details.snapshot = snapshot;
details.adapter = adapter.name;
return result.text(formatSessionSnapshot(snapshot).join("\n")).done();
}
case "attach": {
if (params.pid === undefined && params.port === undefined && !params.adapter) {
throw new ToolError("attach requires pid or port");View on GitHub (pinned to 9690622007)
Solutions
- Install/configure an adapter for the language in the workspace DAP adapter config.
- Pass a valid `adapter` name from the installed-adapters list in the message.
- Check the adapter name for typos against the listed installed adapters.
- If the language truly has no adapter, use a different debugging approach (e.g. run the program and inspect logs).
Example fix
// before
{ "action": "launch", "program": "./server.py", "adapter": "debugpyy" } // typo, nothing matches
// after
{ "action": "launch", "program": "./server.py", "adapter": "debugpy" } Defensive patterns
Strategy: fallback
Validate before calling
const snap = await debugTool({ action: "snapshot" }); // or read workspace adapter config
const installed = snap.installedAdapters ?? [];
if (!installed.includes(adapterName)) {
adapterName = installed[0]; // or configure the needed adapter first
} Try / catch
try {
return await debugTool({ action: "launch", program });
} catch (e) {
if (String(e).includes("No debugger adapter available")) {
// parse 'Installed adapters: [...]' from the message and configure/install one
throw new Error("configure a DAP adapter for this language first");
}
throw e;
} Prevention
- Ensure the workspace DAP adapter config registers an adapter per language you debug.
- Validate adapter names against configured adapters before passing them.
- Set up adapters as part of workspace/environment provisioning.
When it happens
Trigger: Calling action=launch where no adapter matches the program type and no explicit adapter was given, or the explicitly requested adapter isn't among configured ones and nothing else fits.
Common situations: Debugging a language with no adapter configured (e.g. Rust/C++ with only debugpy installed); typo in the adapter name causing fallback selection to fail; fresh workspace with no DAP adapter config at all; adapter installed on machine but not registered in the workspace config.
Related errors
- DAP adapter ${parent.adapter.name} cannot accept child sessi
- SqlSessionStorage: unable to infer adapter from client.optio
- launch program resolves to a directory: ${displayPath}. Pass
- No active debug session. Launch or attach first.
- Current adapter does not support ${description}
AI-assisted analysis of can1357/oh-my-pi@9690622007 (2026-08-31).
Data as JSON: /api/errors/d518b481e12644b8.
Report an issue: GitHub.