eyaltoledano/claude-task-master · warning
No default executor available
Error message
No default executor available
What it means
executor-factory.ts getDefaultExecutor() probes installed AI CLIs (currently only Claude) and returns the detected type or null. When no supported executor binary is found on PATH, it logs 'No default executor available' and returns null, so callers have no executor to run tasks with.
Source
Thrown at packages/tm-core/src/modules/execution/executors/executor-factory.ts:49
throw new Error(`Unknown executor type: ${options.type}`);
}
}
/**
* Get the default executor type based on available tools
*/
static async getDefaultExecutor(
projectRoot: string
): Promise<ExecutorType | null> {
// Check for Claude first
const claudeExecutor = new ClaudeExecutor(projectRoot);
if (await claudeExecutor.isAvailable()) {
this.logger.info('Claude CLI detected as default executor');
return 'claude';
}
// Could check for other executors here
this.logger.warn('No default executor available');
return null;
}
/**
* Get list of available executor types
*/
static getAvailableTypes(): ExecutorType[] {
return ['claude', 'shell', 'custom'];
}
}
View on GitHub (pinned to c0c98d367c)
Solutions
- Install the Claude CLI and verify it is on PATH (`claude --version` works)
- Export/extend PATH so the CLI binary is discoverable by the process
- Explicitly pass an executor type instead of relying on the default, after confirming that executor's CLI is installed
- Handle the null return by surfacing a setup message to the user rather than proceeding
Example fix
// before
const type = await factory.getDefaultExecutor();
// after
const type = await factory.getDefaultExecutor();
if (!type) throw new Error('No AI executor CLI found; install claude and ensure it is on PATH'); Defensive patterns
Strategy: fallback
Validate before calling
import { execSync } from 'child_process';
function claudeCliOnPath(): boolean {
try { execSync('claude --version', { stdio: 'ignore' }); return true; }
catch { return false; }
} Type guard
function hasDefaultExecutor(t: string | null): t is Exclude<typeof t, null> {
return t !== null;
} Try / catch
const type = await factory.getDefaultExecutor();
if (!hasDefaultExecutor(type)) {
throw new Error('No AI executor CLI found on PATH; install claude CLI first');
} Prevention
- Install the executor CLI in your Dockerfile/CI image
- Verify CLI availability in a preflight/setup script
- Extend PATH for npx-style local installs
- Handle the null return explicitly instead of assuming success
When it happens
Trigger: Calling getDefaultExecutor() (e.g. when creating an executor by type) in an environment where the Claude CLI (and any other supported CLIs) are not installed or not on PATH.
Common situations: Fresh CI containers without the AI CLI installed, running inside Docker images that omit the CLI, PATH misconfigured for a local npx-style install, or an incompatible CLI version.
Related errors
- MFA_VERIFICATION_FAILED
- MFA_VERIFICATION_FAILED
- Command execution error: ${result.error.message}
- Command failed with exit code ${result.status}: ${errorOutpu
- NO_TOKEN
AI-assisted analysis of eyaltoledano/claude-task-master@c0c98d367c (2026-08-29).
Data as JSON: /api/errors/7766530825c0ef69.
Report an issue: GitHub.