continuedev/continue · error · Error
Missing required input(s) for block "${blockName}": ${missin
Error message
Missing required input(s) for block "${blockName}": ${missingInputNames.join(", ")}. Please provide these values in the "with" block. What it means
After template rendering, some block inputs (referenced via ${{ inputs.x }}) remain unresolved, meaning required inputs were not supplied in the 'with' block. The error lists the missing input names and the block's shorthand slug.
Source
Thrown at packages/config-yaml/src/load/unroll.ts:749
// Convert any input secrets to FQSNs (they get FQSNs as if they are in the block. This is so that we know when to use models add-on / free trial secrets)
const renderedInputs = inputsToFQSNs(inputs || {}, id);
// Render template variables
const templatedYaml = renderTemplateData(rawYaml, {
inputs: renderedInputs,
secrets: extractFQSNMap(rawYaml, [id]),
});
// Check for unresolved input template variables (missing required inputs)
const unresolvedInputs = getTemplateVariables(templatedYaml).filter((v) =>
v.startsWith("inputs."),
);
if (unresolvedInputs.length > 0) {
const missingInputNames = unresolvedInputs.map((v) =>
v.replace("inputs.", ""),
);
const blockName = packageIdentifierToShorthandSlug(id);
throw new Error(
`Missing required input(s) for block "${blockName}": ${missingInputNames.join(", ")}. ` +
`Please provide these values in the "with" block.`,
);
}
// Add source slug for mcp servers
const parsed = parseMarkdownRuleOrAssistantUnrolled(templatedYaml, id);
if (
id.uriType === "slug" &&
"mcpServers" in parsed &&
parsed.mcpServers?.[0]
) {
parsed.mcpServers[0].sourceSlug = `${id.fullSlug.ownerSlug}/${id.fullSlug.packageSlug}`;
}
return parsed;
}
View on GitHub (pinned to 5522c6f44c)
Solutions
- Add the listed inputs under the block's 'with' block in your config
- Check exact input names (case-sensitive) against the block's definition
- If the input should be optional, modify the block's template to provide a default
Example fix
# before
blocks:
- my-owner/my-block:
with:
model: gpt-4
# after
blocks:
- my-owner/my-block:
with:
model: gpt-4
api_key: ${secret:my-secret} Defensive patterns
Strategy: validation
Validate before calling
import { getTemplateVariables } from '...';
const declared = getTemplateVariables(blockYaml).filter(v => v.startsWith('inputs.'));
const supplied = new Set(Object.keys(withValues));
const missing = declared.filter(v => !supplied.has(v.replace('inputs.', '')));
if (missing.length) throw new Error(`Missing: ${missing.join(', ')}`); Try / catch
try { await resolveBlock(...); } catch (e) { if (e.message.includes('Missing required input')) { /* collect and prompt for the listed inputs */ } } Prevention
- Always fill the 'with' block completely when using shared blocks
- Re-check required inputs after upgrading a block
- Match input names exactly (case-sensitive)
When it happens
Trigger: Using a block that declares required inputs but your config's 'with' map omits one or more of them (or misspells a key so the template variable never resolves).
Common situations: Upgrading a block that added new required inputs, copy/pasting a block usage without filling in all 'with' values, key casing/typo mismatches.
Understand the failure class
Background: Missing required parameter errors: what 'X is required' and 'the required X param is missing' mean, and how to fix them — this error's family across 27 libraries.
Related errors
AI-assisted analysis of continuedev/continue@5522c6f44c (2026-08-27).
Data as JSON: /api/errors/86c447cb992c353e.
Report an issue: GitHub.