tinyhumansai/openhuman · error · ValidationError
Invalid ${paramName}: must be an array of IDs.
Error message
Invalid ${paramName}: must be an array of IDs. What it means
Dispatch error from the `openhuman subconscious` CLI router (src/core/subconscious_cli.rs:19). The first token after `subconscious` is matched against exactly two subcommands — `tick` and `status` — and anything else falls into the catch-all arm. Help (-h/--help/help) is only recognized at args[0]; there is no help token inside either subcommand's parser.
Source
Thrown at app/src/lib/mcp/validation.ts:56
return value.startsWith('@') ? value : `@${value}`;
}
throw new ValidationError(
`Invalid ${paramName}: '${value}'. Must be a valid integer ID or a username string.`
);
}
throw new ValidationError(
`Invalid ${paramName}: ${String(value)}. Type must be an integer or a string.`
);
}
/**
* Validate list of IDs
*/
export function validateIdList(value: unknown, paramName: string): Array<number | string> {
if (!Array.isArray(value)) {
throw new ValidationError(`Invalid ${paramName}: must be an array of IDs.`);
}
return value.map((item: unknown, index: number) => {
try {
return validateId(item, `${paramName}[${index}]`);
} catch (error) {
if (error instanceof ValidationError) {
throw error;
}
const errorMsg = error instanceof Error ? error.message : String(error);
throw new ValidationError(`Invalid ${paramName}[${index}]: ${errorMsg}`);
}
});
}
/**
* Validate a positive integer parameter (e.g. message IDs)
*/View on GitHub (pinned to a221052e0d)
Solutions
- Use only `tick` or `status`: `openhuman subconscious tick --mode simple`
- Run `openhuman subconscious --help` (top level) for the full surface
- Fix scripts to validate the first token against {tick, status}
Example fix
# before openhuman subconscious run --mode aggressive # after openhuman subconscious tick --mode aggressive
Defensive patterns
Strategy: validation
Validate before calling
# bash: validate the subconscious subcommand first
case "${1:-}" in tick|status) ;; *) echo "unknown subconscious subcommand '${1:-}'" >&2; openhuman subconscious --help >&2; exit 2;; esac
openhuman subconscious "$@" Type guard
is_known_subconscious_sub() { case "$1" in tick|status) return 0;; *) return 1;; esac; } Try / catch
if ! out=$(openhuman subconscious "$@" 2>&1); then case "$out" in *"unknown subconscious subcommand"*) openhuman subconscious --help >&2; exit 2;; esac printf '%s\n' "$out" >&2; exit 1 fi
Prevention
- The surface is exactly {tick, status} — validate wrappers against it
- Ask for help at the top level (`openhuman subconscious --help`), not per-subcommand
When it happens
Trigger: `openhuman subconscious run` (no such subcommand); `openhuman subconscious -v` (flags not accepted in the subcommand position); `openhuman subconscious monitor` from a script written for a different daemon's CLI.
Common situations: Scripts or aliases assuming a richer subconscious surface; typos; passing global flags before the subcommand.
Related errors
- Invalid ${paramName}[${index}]: ${errorMsg}
- PAYMENT_REQUIRED
- Sentry.flush(2000) timed out — event may not have reached Se
- audio blob is empty
- voice_not_compiled
AI-assisted analysis of tinyhumansai/openhuman@a221052e0d (2026-08-16).
Data as JSON: /api/errors/edc7c555b59882a4.
Report an issue: GitHub.