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

  1. Install/configure an adapter for the language in the workspace DAP adapter config.
  2. Pass a valid `adapter` name from the installed-adapters list in the message.
  3. Check the adapter name for typos against the listed installed adapters.
  4. 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

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


AI-assisted analysis of can1357/oh-my-pi@9690622007 (2026-08-31). Data as JSON: /api/errors/d518b481e12644b8. Report an issue: GitHub.