paperclipai/paperclip · error · Error
Unsupported local provider smoke profile: ${profile}
Error message
Unsupported local provider smoke profile: ${profile} What it means
After expanding selected --profile values, parseProfiles verifies each expanded profile is a member of PROFILE_IDS. Any unrecognized profile name throws this error listing the offending value. This runs after the flag-shape check (error 110), so the flag was well-formed but the value was wrong.
Source
Thrown at packages/paperclip-runner/scripts/run-local-provider-smoke.mjs:32
];
function parseProfiles(args) {
const selected = [];
for (let index = 0; index < args.length; index += 1) {
if (args[index] !== "--profile" || !args[index + 1]) {
throw new Error(
`Usage: pnpm smoke:local-provider -- --profile <${PROFILE_IDS.join("|")}|all>`,
);
}
selected.push(args[++index]);
}
if (selected.length === 0) return ["runner-acpx-claude"];
const expanded = selected.flatMap((profile) =>
profile === "all" ? PROFILE_IDS : [profile],
);
for (const profile of expanded) {
if (!PROFILE_IDS.includes(profile)) {
throw new Error(`Unsupported local provider smoke profile: ${profile}`);
}
}
return [...new Set(expanded)];
}
function liveCandidate(id, candidateSlots) {
const candidates = candidateSlots.flatMap((slot) => slot.candidates);
if (id === "runner-acpx-claude") {
return candidates.find(
(candidate) => candidate.id === "acpx-claude-sonnet",
);
}
if (id === "runner-acpx-codex") {
return candidates.find((candidate) => candidate.id === "acpx-codex-sol");
}
if (id === "runner-codex") {
const source = candidates.find(
(candidate) => candidate.id === "codex-luna",View on GitHub (pinned to 01ad858492)
Solutions
- Use an exact profile id from PROFILE_IDS in run-local-provider-smoke.mjs (e.g. runner-acpx-claude).
- Use `--profile all` to run every supported profile.
- Repeat the --profile flag instead of comma-separating: `--profile a --profile b`.
Example fix
// before pnpm smoke:local-provider -- --profile claude-code // after pnpm smoke:local-provider -- --profile all
Defensive patterns
Strategy: validation
Validate before calling
const PROFILE_IDS = ['runner-acpx-claude']; // from script source
for (const p of myProfiles) if (!PROFILE_IDS.includes(p) && p !== 'all') throw new Error(`bad profile ${p}`); Prevention
- Copy profile ids from the script source
- Use --profile all
- Prefer repeated flags over comma-joined values
When it happens
Trigger: `pnpm smoke:local-provider -- --profile runner-foo` where runner-foo is not in PROFILE_IDS, or `--profile all,typo` style comma values (each comma-joined string is treated as one profile name).
Common situations: Guessing a profile name instead of checking the catalog, using a profile that exists in another eval script but not this one, or passing comma-separated values where the script expects repeated flags.
Understand the failure class
Background: Invalid enum value errors: "Unknown type", "Invalid scope", "must be one of" — when a string is not on the library's allowed list — this error's family across 23 libraries.
Related errors
- unsupported workflow eval schedule mode: ${mode}
- Usage: pnpm smoke:local-provider -- --profile <${PROFILE_IDS
- Managed installs require Node.js ${MINIMUM_NODE_VERSION} or
- Import cancelled.
- Could not open your browser automatically. Open this URL man
AI-assisted analysis of paperclipai/paperclip@01ad858492 (2026-09-10).
Data as JSON: /api/errors/c2d93288a45d3932.
Report an issue: GitHub.