BloopAI/vibe-kanban · error
Provide `prompt`, or `issue_id` that has a non-empty title/d
Error message
Provide `prompt`, or `issue_id` that has a non-empty title/description.
What it means
The MCP `start_workspace` tool requires an execution prompt. It accepts either an explicit `prompt` argument or an `issue_id` whose linked issue yields a non-empty prompt (built from the issue's title/description via `build_workspace_prompt_from_issue`). If both resolve to nothing — no prompt passed, no issue_id passed, or the issue's title/description are empty — the tool returns this error instead of starting a workspace.
Source
Thrown at crates/mcp/src/task_server/tools/task_attempts.rs:172
Ok(issue) => issue,
Err(e) => return Ok(Self::tool_error(e)),
};
(
Some(LinkedIssueInfo {
remote_project_id: issue.project_id,
issue_id,
}),
build_workspace_prompt_from_issue(&issue),
)
} else {
(None, None)
};
let workspace_prompt = match prompt.or(issue_prompt) {
Some(prompt) => prompt,
None => {
return Self::err(
"Provide `prompt`, or `issue_id` that has a non-empty title/description.",
None::<&str>,
);
}
};
let create_and_start_payload = CreateAndStartWorkspaceRequest {
name: Some(name.clone()),
repos: workspace_repos,
linked_issue,
executor_config: ExecutorConfig {
executor: base_executor,
variant,
model_id: None,
agent_id: None,
reasoning_id: None,
permission_policy: None,
},View on GitHub (pinned to 4deb7eca8f)
Solutions
- Pass a non-empty `prompt` argument describing the task to start_workspace.
- If using `issue_id`, verify the issue has a non-empty title or description via GET /api/remote/issues/{issue_id} before calling.
- Fill in the issue's title/description, or pass both prompt and issue_id so the prompt is always present.
Example fix
// before
start_workspace({ name: "fix-bug", repositories: [{ repo_id: "r1" }] })
// after
start_workspace({ name: "fix-bug", repositories: [{ repo_id: "r1" }], prompt: "Fix the login redirect bug described in issue #42" }) Defensive patterns
Strategy: validation
Validate before calling
// Rust caller, before invoking start_workspace
fn ensure_prompt(prompt: &Option<String>, issue: &Option<Issue>) -> Result<String, String> {
if let Some(p) = prompt {
if !p.trim().is_empty() { return Ok(p.clone()); }
}
if let Some(iss) = issue {
let derived = format!("{} {}", iss.title, iss.description.as_deref().unwrap_or(""));
if !derived.trim().is_empty() { return Ok(derived); }
}
Err("Provide a non-empty prompt, or an issue_id with non-empty title/description".into())
} Type guard
fn has_prompt_input(prompt: &Option<String>, issue_title: &str, issue_desc: &str) -> bool {
prompt.as_deref().map(|p| !p.trim().is_empty()).unwrap_or(false)
|| !issue_title.trim().is_empty()
|| !issue_desc.trim().is_empty()
} Prevention
- Always pass an explicit prompt when automating workspace starts via MCP.
- Validate issue title/description non-empty before using issue_id-only calls.
- Trim and check prompt strings client-side; empty/whitespace prompts are rejected.
When it happens
Trigger: Calling start_workspace with neither `prompt` nor `issue_id`; calling with `issue_id` pointing to an issue whose title AND description are empty/whitespace so `build_workspace_prompt_from_issue` returns None; passing a whitespace-only `prompt` that trims to nothing.
Common situations: Agents/LLM clients invoking the MCP tool with only name/repositories filled in; automation scripts referencing issues created without descriptions; assuming any issue_id works when the issue is essentially blank.
Understand the failure class
Background: "missing required argument" and "the following required arguments were not provided": what required-argument errors mean and how to fix them — this error's family across 20 libraries.
Related errors
- Expected object at path: ${mcp_config.servers_path.join('.')
- Missing required field at path: ${mcp_config.servers_path.jo
- Servers configuration must be an object
- Unknown preconfigured server '${serverKey}'
- Action "${action.id}" requires a workspace target
AI-assisted analysis of BloopAI/vibe-kanban@4deb7eca8f (2026-08-29).
Data as JSON: /api/errors/130cf40aab12ca03.
Report an issue: GitHub.