{"record":{"id":"86c447cb992c353e","repo":"continuedev/continue","slug":"missing-required-input-s-for-block-blockname","errorCode":null,"errorMessage":"Missing required input(s) for block \"${blockName}\": ${missingInputNames.join(\", \")}. Please provide these values in the \"with\" block.","messagePattern":"Missing required input\\(s\\) for block \"(.+?)\": (.+?)\\. Please provide these values in the \"with\" block\\.","errorType":"validation","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"packages/config-yaml/src/load/unroll.ts","lineNumber":749,"sourceCode":"  // 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)\n  const renderedInputs = inputsToFQSNs(inputs || {}, id);\n\n  // Render template variables\n  const templatedYaml = renderTemplateData(rawYaml, {\n    inputs: renderedInputs,\n    secrets: extractFQSNMap(rawYaml, [id]),\n  });\n\n  // Check for unresolved input template variables (missing required inputs)\n  const unresolvedInputs = getTemplateVariables(templatedYaml).filter((v) =>\n    v.startsWith(\"inputs.\"),\n  );\n  if (unresolvedInputs.length > 0) {\n    const missingInputNames = unresolvedInputs.map((v) =>\n      v.replace(\"inputs.\", \"\"),\n    );\n    const blockName = packageIdentifierToShorthandSlug(id);\n    throw new Error(\n      `Missing required input(s) for block \"${blockName}\": ${missingInputNames.join(\", \")}. ` +\n        `Please provide these values in the \"with\" block.`,\n    );\n  }\n\n  // Add source slug for mcp servers\n  const parsed = parseMarkdownRuleOrAssistantUnrolled(templatedYaml, id);\n  if (\n    id.uriType === \"slug\" &&\n    \"mcpServers\" in parsed &&\n    parsed.mcpServers?.[0]\n  ) {\n    parsed.mcpServers[0].sourceSlug = `${id.fullSlug.ownerSlug}/${id.fullSlug.packageSlug}`;\n  }\n\n  return parsed;\n}\n","sourceCodeStart":731,"sourceCodeEnd":767,"githubUrl":"https://github.com/continuedev/continue/blob/5522c6f44ca0ac3528b37244818fbfa39b5af470/packages/config-yaml/src/load/unroll.ts#L731-L767","documentation":"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.","triggerScenarios":"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).","commonSituations":"Upgrading a block that added new required inputs, copy/pasting a block usage without filling in all 'with' values, key casing/typo mismatches.","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"],"exampleFix":"# before\nblocks:\n  - my-owner/my-block:\n      with:\n        model: gpt-4\n# after\nblocks:\n  - my-owner/my-block:\n      with:\n        model: gpt-4\n        api_key: ${secret:my-secret}","handlingStrategy":"validation","validationCode":"import { getTemplateVariables } from '...';\nconst declared = getTemplateVariables(blockYaml).filter(v => v.startsWith('inputs.'));\nconst supplied = new Set(Object.keys(withValues));\nconst missing = declared.filter(v => !supplied.has(v.replace('inputs.', '')));\nif (missing.length) throw new Error(`Missing: ${missing.join(', ')}`);","typeGuard":null,"tryCatchPattern":"try { await resolveBlock(...); } catch (e) { if (e.message.includes('Missing required input')) { /* collect and prompt for the listed inputs */ } }","preventionTips":["Always fill the 'with' block completely when using shared blocks","Re-check required inputs after upgrading a block","Match input names exactly (case-sensitive)"],"tags":["block","inputs","template","missing-value"],"backgroundTag":"missing-required-parameter","analyzedSha":"5522c6f44ca0ac3528b37244818fbfa39b5af470","analyzedAt":"2026-08-27T11:28:54.683Z","schemaVersion":2},"datasetVersion":"2026-08-27T13:17:12.746Z"}