conductor-oss/conductor · error · NonRetryableException
AGENT requires 'prompt'
Error message
AGENT requires 'prompt'
What it means
Thrown by ConductorAgentDelegate.startOrResume when starting a brand-new agent execution: executionId is null/blank AND the 'prompt' field is also blank. A new run has nothing to do without an initial prompt, so the call is rejected before it reaches conductorAgentClient.startAgent. It is a NonRetryableException, so the task fails terminally (FAILED_WITH_TERMINAL_ERROR) with no retry.
Source
Thrown at ai/src/main/java/org/conductoross/conductor/ai/agent/ConductorAgentDelegate.java:123
}
private ConductorAgentExecution startOrResume(Task task, ConductorAgentRequest request) {
String executionId = StringUtils.trimToNull(request.getExecutionId());
if (executionId != null) {
if (StringUtils.isBlank(request.getPrompt())) {
throw new NonRetryableException(
"AGENT (conductor) requires 'prompt' when resuming an execution");
}
conductorAgentClient.respond(
ConductorAgentRespondRequest.builder()
.executionId(executionId)
.body(Map.of("result", request.getPrompt()))
.build());
return fromStatus(conductorAgentClient.getAgentStatus(executionId), null);
}
if (StringUtils.isBlank(request.getPrompt())) {
throw new NonRetryableException("AGENT requires 'prompt'");
}
request.setIdempotencyKey(
StringUtils.firstNonBlank(request.getIdempotencyKey(), idempotencyKey(task)));
ConductorAgentStartResponse response = conductorAgentClient.startAgent(request);
return ConductorAgentExecution.builder()
.executionId(response.getExecutionId())
.agentName(response.getAgentName())
.state(ConductorAgentState.RUNNING)
.build();
}
private TaskResult handlePollFailure(
TaskResult result, ConductorAgentRequest request, String executionId, Exception error) {
int failures =
(int) asLong(result.getOutputData().get(ConductorAgentResults.KEY_POLL_FAILURES), 0)
+ 1;
result.getOutputData().put(ConductorAgentResults.KEY_POLL_FAILURES, failures);
int maxFailures = maxPollFailures(request);View on GitHub (pinned to cf7c3e4a8a)
Solutions
- Always supply a non-empty 'prompt' in the AGENT task input — it is mandatory for starting a run.
- Verify the JSONPath/variable binding for prompt resolves to real text and not null or "".
- If the prompt is genuinely optional in your flow, gate the AGENT task behind a decision/switch so it is only reached when text exists.
Example fix
// before
{ "name": "my-agent", "model": "gpt-4o" }
// after
{ "name": "my-agent", "model": "gpt-4o", "prompt": "${summarize.output.text}" } Defensive patterns
Strategy: validation
Validate before calling
// Validate the AGENT start input before execution
String prompt = (String) taskInput.get("prompt");
if (prompt == null || prompt.isBlank()) {
throw new IllegalStateException("AGENT task requires a non-blank 'prompt' input");
} Try / catch
try {
delegate.execute(task);
} catch (NonRetryableException e) {
// terminal — do not retry; surface to workflow as a failed task
log.error("AGENT start rejected: {}", e.getMessage());
throw e;
} Prevention
- Treat 'prompt' as a required field in every AGENT task definition.
- Add a JSON-schema/precondition check on the workflow input that produces the prompt.
- Fail fast in the producing task (clear message) rather than letting the AGENT task fail terminally.
When it happens
Trigger: An AGENT task (agentType=conductor) is invoked with task input that has no 'prompt' key at all, or whose prompt is an empty string / whitespace. This is the first-invoce 'start' path — executionId is absent.
Common situations: Workflow definition references a variable for the prompt that resolves to null; the prompt was intended to come from a previous task whose output key name is misspelled; a template that conditionally omits the prompt when it should always be present.
Related errors
- AGENT (conductor) requires 'prompt' when resuming an executi
- Skill manifest name '{manifestName}' does not match package
- Skill {name} version {version} already exists with a differe
- File path is required
- skillRef is required
AI-assisted analysis of conductor-oss/conductor@cf7c3e4a8a (2026-08-14).
Data as JSON: /api/errors/df34ddc31b7b921c.
Report an issue: GitHub.