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

  1. Use only `tick` or `status`: `openhuman subconscious tick --mode simple`
  2. Run `openhuman subconscious --help` (top level) for the full surface
  3. 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

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


AI-assisted analysis of tinyhumansai/openhuman@a221052e0d (2026-08-16). Data as JSON: /api/errors/edc7c555b59882a4. Report an issue: GitHub.