affaan-m/ECC · error · Error
Invalid Kimi install profile: ${profile}
Error message
Invalid Kimi install profile: ${profile} What it means
When Kimi is selected, the managed install profile must be one of minimal, core, developer, security, research, or full (VALID_PROFILES). The profile selects which module bundle the managed installer lays down. Any other value is rejected because there is no module set defined for it. The check only fires when Kimi is selected; otherwise profile is undefined.
Source
Thrown at scripts/lib/multi-harness-setup.js:45
const includesKimi = harnesses.includes('kimi');
if (!includesClaude && (input.claudeScope !== undefined || input.claudeHooks !== undefined)) {
throw new Error('Claude scope and hook options require Claude to be selected.');
}
if (!includesKimi && input.profile !== undefined) {
throw new Error('The managed install profile requires Kimi to be selected.');
}
const claudeScope = includesClaude ? (input.claudeScope || 'user') : undefined;
const claudeHooks = includesClaude ? (input.claudeHooks || 'standard') : undefined;
const profile = includesKimi ? (input.profile || 'core') : undefined;
if (claudeScope && !VALID_CLAUDE_SCOPES.has(claudeScope)) {
throw new Error(`Invalid Claude scope: ${claudeScope}`);
}
if (claudeHooks && !VALID_CLAUDE_HOOKS.has(claudeHooks)) {
throw new Error(`Invalid Claude hooks preference: ${claudeHooks}`);
}
if (profile && !VALID_PROFILES.has(profile)) {
throw new Error(`Invalid Kimi install profile: ${profile}`);
}
return {
harnesses,
...(claudeHooks ? { claudeHooks } : {}),
...(claudeScope ? { claudeScope } : {}),
dryRun: Boolean(input.dryRun),
json: Boolean(input.json),
...(profile ? { profile } : {}),
yes: Boolean(input.yes),
};
}
function canonicalPath(filePath) {
return realpathNearestExisting(filePath);
}
function pathsMatch(left, right) {View on GitHub (pinned to 01e15490f0)
Solutions
- Use one of the six valid profiles: 'minimal', 'core' (default), 'developer', 'security', 'research', or 'full'.
- Omit profile to accept the default ('core').
- If you need a custom module set, that is not supported via profile — drive the installer's request layer directly with a custom module list instead.
- Verify spelling and case — values are matched exactly against the lowercase set.
Example fix
// before
normalizeGuidedInstallRequest({ harnesses: ['kimi'], profile: 'basic' }); // throws
// after
normalizeGuidedInstallRequest({ harnesses: ['kimi'], profile: 'minimal' });
// or omit for the default
normalizeGuidedInstallRequest({ harnesses: ['kimi'] }); // profile = 'core' Defensive patterns
Strategy: validation
Validate before calling
const { VALID_PROFILES } = require('./scripts/lib/multi-harness-setup');
function assertProfile(value) {
if (value !== undefined && !VALID_PROFILES.has(value)) {
throw new Error(`Invalid Kimi install profile: ${value}`);
}
return value;
} Type guard
function isValidProfile(v) {
return v === undefined || new Set(['minimal','core','developer','security','research','full']).has(v);
} Try / catch
try { normalizeGuidedInstallRequest(input); }
catch (error) {
if (/Invalid Kimi install profile/i.test(error.message)) {
console.error('profile must be one of: minimal, core, developer, security, research, full.');
return;
}
throw error;
} Prevention
- Use only minimal, core, developer, security, research, or full for profile.
- Omit profile to accept the default ('core').
- Watch for synonyms: 'basic' -> 'minimal', 'complete' -> 'full'.
- Drive dropdowns from VALID_PROFILES.
When it happens
Trigger: Calling normalizeGuidedInstallRequest with harnesses including 'kimi' and a profile outside {minimal, core, developer, security, research, full}. Examples: 'basic', 'complete', 'enterprise', an empty string, or a typo like 'dev'.
Common situations: Typing the profile name; assuming 'basic' or 'complete' are valid; passing a custom profile id; stale naming from a prior version; a UI dropdown with the wrong value list; copy-paste from outdated docs.
Related errors
- Choose at least one guided harness: Claude, Codex, or Kimi.
- Claude scope and hook options require Claude to be selected.
- The managed install profile requires Kimi to be selected.
- Invalid Claude scope: ${claudeScope}
- Invalid Claude hooks preference: ${claudeHooks}
AI-assisted analysis of affaan-m/ECC@01e15490f0 (2026-08-13).
Data as JSON: /api/errors/feab1408a9050905.
Report an issue: GitHub.