tinyhumansai/openhuman · error
Recovery phrase is required.
Error message
Recovery phrase is required.
What it means
Argument-loop error from `openhuman memory namespaces` (alias `ns`). This subcommand takes NO arguments at all besides `-v/--verbose` and `-h/--help` — it simply lists namespaces. Any other token aborts.
Source
Thrown at app/src/features/wallet/setupLocalWalletFromMnemonic.ts:22
deriveWalletAccountsFromMnemonic,
type WalletSetupSource,
} from '../../utils/cryptoKeys';
import { openhumanEncryptSecret } from '../../utils/tauriCommands/auth';
export async function persistLocalWalletFromMnemonic(args: {
mnemonic: string;
source: WalletSetupSource;
setEncryptionKey: (value: string | null) => Promise<void>;
/**
* Set to `true` only when the user has explicitly confirmed wallet replacement
* through the double-confirmation dialog. Defaults to `false`.
*/
force?: boolean;
}): Promise<void> {
const { mnemonic, source, setEncryptionKey, force } = args;
const words = mnemonic.trim().split(/\s+/).filter(Boolean);
if (words.length === 0) {
throw new Error('Recovery phrase is required.');
}
const normalizedMnemonic = words.join(' ');
const aesKey = deriveAesKeyFromMnemonic(normalizedMnemonic);
const encryptedMnemonic = (await openhumanEncryptSecret(normalizedMnemonic)).result?.trim();
if (!encryptedMnemonic) {
throw new Error('Failed to secure recovery phrase. Please try again.');
}
await setEncryptionKey(aesKey);
await setupLocalWallet({
consentGranted: true,
source,
mnemonicWordCount: words.length,
encryptedMnemonic,
accounts: deriveWalletAccountsFromMnemonic(normalizedMnemonic),
force,
});
}View on GitHub (pinned to a221052e0d)
Solutions
- Run it bare: `openhuman memory namespaces` (optionally with -v)
- Filter client-side: `openhuman memory namespaces | grep '^docs'`
- Remove flags your wrapper unconditionally appends
Example fix
# before openhuman memory namespaces --all # after openhuman memory namespaces
Defensive patterns
Strategy: validation
Validate before calling
# bash: namespaces takes no real arguments for a in "$@"; do case "$a" in -v|--verbose|-h|--help) ;; *) echo "unexpected arg: $a" >&2; exit 2;; esac; done openhuman memory namespaces "$@"
Try / catch
if ! out=$(openhuman memory namespaces "$@" 2>&1); then case "$out" in *"unknown namespaces arg"*) echo 'usage: openhuman memory namespaces [-v]' >&2; exit 2;; esac printf '%s\n' "$out" >&2; exit 1 fi
Prevention
- Filter namespace lists client-side (grep/jq) instead of adding CLI flags
When it happens
Trigger: `openhuman memory namespaces --all`; `openhuman memory ns default`; `openhuman memory namespaces -q foo`.
Common situations: Trying to filter or inspect one namespace positionally; piping flags from a generic wrapper that appends extras to every subcommand.
Related errors
- audio blob is empty
- voice_not_compiled
- Failed to secure recovery phrase. Please try again.
- Invalid ${paramName}: ${value}. ID is out of the valid integ
- OpenHuman could not reach its local runtime. Quit and reopen
AI-assisted analysis of tinyhumansai/openhuman@a221052e0d (2026-08-16).
Data as JSON: /api/errors/3b7a400a4c5233d3.
Report an issue: GitHub.