paperclipai/paperclip · error · Error
Missing live candidate for
Error message
Missing live candidate for ${profile} What it means
For each selected profile the script resolves a live candidate via liveCandidate(profile, RUNNER_LIVE_CANDIDATE_SLOTS). If no candidate matches the profile's qualification slot, it throws this error naming the profile. This means the profile cannot be run live because no configured candidate supports it.
Solutions
- Check RUNNER_LIVE_CANDIDATE_SLOTS in run-local-provider-smoke.mjs for the profile id and add/register a matching candidate slot if missing.
- Run a different profile that has a registered live candidate (e.g. runner-acpx-claude).
- If the profile id was renamed, update the slots map to use the new id.
Example fix
// before
RUNNER_LIVE_CANDIDATE_SLOTS = [{ profiles: ["runner-acpx-claude"], ... }]
// after
RUNNER_LIVE_CANDIDATE_SLOTS = [{ profiles: ["runner-acpx-claude", "runner-new"], ... }] Defensive patterns
Strategy: validation
Validate before calling
const slots = require('./run-local-provider-smoke.mjs'); // or read source
if (!RUNNER_LIVE_CANDIDATE_SLOTS.some(s => s.profiles.includes(profile))) console.warn(`no live candidate for ${profile}`); Prevention
- Register a slot for every new profile id
- Grep RUNNER_LIVE_CANDIDATE_SLOTS before adding profiles
- Keep profile ids and slot keys in sync on renames
When it happens
Trigger: Selecting a profile whose id has no entry in RUNNER_LIVE_CANDIDATE_SLOTS (or all entries fail liveCandidate's slot matching), e.g. a newly added profile in PROFILE_IDS without a corresponding live candidate slot.
Common situations: Adding a new smoke profile without registering its live candidate, or profile-id renames that left the slots map stale.
Understand the failure class
Background: 'Could not be found', 'does not exist', 'not found in database': the resource-not-found family when an ID, slug, key, or URI lookup comes back empty — this error's family across 20 libraries.
Related errors
- A trusted viewer build is required for public chat reports
- ACPX provider package manifest must be an explicit…
- ACPX provider package root must be an explicit normalized…
- ACPX runtime executable must be a bounded executable file
- agent_authorization_required
AI-assisted analysis of paperclipai/paperclip@01ad858492 (2026-09-10).
Data as JSON: /api/errors/ecaf05c9eb5b0206.
Report an issue: GitHub.
Appendix: source
Thrown at packages/paperclip-runner/scripts/run-local-provider-smoke.mjs:251
let failed = false;
try {
// Import only after the disposable homes are authoritative so no provider
// module can snapshot the developer's normal Paperclip or provider state.
const {
RUNNER_LIVE_CANDIDATE_SLOTS,
executeLiveRunnerWorkflow,
runnerWorkflowCase,
} = await import("../dist/eval/index.js");
const candidates = new Map(
profiles.map((profile) => [
profile,
liveCandidate(profile, RUNNER_LIVE_CANDIDATE_SLOTS),
]),
);
const credentialsByProfile = new Map();
for (const [profile, candidate] of candidates) {
if (!candidate) throw new Error(`Missing live candidate for ${profile}`);
const missingCredentials = [];
const profileCredentials = {};
for (const name of candidate.qualification.requiredEnvironment) {
const value = ambientEnvironment[name]?.trim();
if (value) profileCredentials[name] = value;
else missingCredentials.push(name);
}
if (missingCredentials.length > 0) {
throw new Error(
`${profile} requires ${missingCredentials.join(", ")} in the smoke process environment`,
);
}
credentialsByProfile.set(profile, profileCredentials);
}
const providerCredentialNames = new Set(
[...credentialsByProfile.values()].flatMap((credentials) =>
Object.keys(credentials),
),View on GitHub (pinned to 01ad858492)