{"record":{"id":"b127134f3b0d96f6","repo":"deepseek-ai/deepseek-harness","slug":"toolorder-lists-unregistered-tool-unknown-length","errorCode":null,"errorMessage":"toolOrder lists unregistered tool${unknown.length > 1 ? 's' : ''} ${unknown.map(name => `\"${name}\"`).join(', ')}; known tools: ${[...knownNames].sort().join(', ') || '(none)'}","messagePattern":"toolOrder lists unregistered tool(.+?) (.+?)\"`\\)\\.join\\(', '\\)\\}; known tools: (.+?)","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"packages/core/system-prompt/src/index.ts","lineNumber":172,"sourceCode":"    throw new Error(`toolOrder must contain the \"${TOOL_ORDER_REST}\" rest entry (where unlisted tools are inserted)`)\n  }\n  return toolOrder\n}\n\n/**\n * Apply configured tool order, inserting unlisted tools lexicographically at\n * {@link TOOL_ORDER_REST}. Unknown configured names fail; known but restricted\n * names may be absent.\n */\nfunction orderTools(tools: ToolSchema[], toolOrder: string[] | undefined, knownNames: ReadonlySet<string>): ToolSchema[] {\n  const reserved = tools.find(tool => tool.name === TOOL_ORDER_REST)\n  if (reserved !== undefined) {\n    throw new Error(`tool provider returned reserved tool name \"${TOOL_ORDER_REST}\" (reserved for toolOrder's rest entry)`)\n  }\n  if (toolOrder === undefined) return tools.sort(compareToolNames)\n  const unknown = toolOrder.filter(name => name !== TOOL_ORDER_REST && !knownNames.has(name))\n  if (unknown.length > 0) {\n    throw new Error(`toolOrder lists unregistered tool${unknown.length > 1 ? 's' : ''} ${unknown.map(name => `\"${name}\"`).join(', ')}; known tools: ${[...knownNames].sort().join(', ') || '(none)'}`)\n  }\n  const listed = new Set(toolOrder)\n  const rest = tools.filter(tool => !listed.has(tool.name)).sort(compareToolNames)\n  return toolOrder.flatMap(name =>\n    name === TOOL_ORDER_REST ? rest : tools.filter(tool => tool.name === name))\n}\n\n/** Lexicographic (code-unit) name comparison — locale-independent, so the order is identical on every machine. */\nfunction compareToolNames(a: ToolSchema, b: ToolSchema): number {\n  return a.name < b.name ? -1 : a.name > b.name ? 1 : 0\n}\n\n/** Plugin config: the deployment-authored fragment of the system prompt (see {@link Config.persona} for its contract). */\nexport interface Config {\n  /** Include the fixed DeepSeek Harness identity before the deployment persona (default true). */\n  includeHarnessIdentity?: boolean\n  /** Include dynamic runtime-context snapshots in model history (default true). */\n  includeRuntimeContext?: boolean","sourceCodeStart":154,"sourceCodeEnd":190,"githubUrl":"https://github.com/deepseek-ai/deepseek-harness/blob/b150a551b8d465e31e418e1b2eaf5e79bbb7d28e/packages/core/system-prompt/src/index.ts#L154-L190","documentation":"Error \"toolOrder lists unregistered tool${unknown.length > 1 ? 's' : ''} ${unknown.map(name => `\"${name}\"`).join(', ')}; known tools: ${[...knownNames].sort().join(', ') || '(none)'}\" thrown in deepseek-ai/deepseek-harness.","triggerScenarios":"Thrown at packages/core/system-prompt/src/index.ts:172 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":[],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"b150a551b8d465e31e418e1b2eaf5e79bbb7d28e","analyzedAt":"2026-08-24T18:12:29.105Z","schemaVersion":2},"datasetVersion":"2026-08-24T22:17:12.610Z"}