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

  1. Add the listed inputs under the block's 'with' block in your config
  2. Check exact input names (case-sensitive) against the block's definition
  3. 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

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.