continuedev/continue · error · Error

Missing required input(s) for block

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.

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 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


AI-assisted analysis of continuedev/continue@5522c6f44c (2026-08-27). Data as JSON: /api/errors/86c447cb992c353e. Report an issue: GitHub.

Appendix: 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)