{"record":{"id":"c9b5e0fe8b0d2ce8","repo":"tinyhumansai/openhuman","slug":"unknown-call-arg-other","errorCode":null,"errorMessage":"unknown call arg: {other}","messagePattern":"unknown call arg: (.+?)","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/core/cli.rs","lineNumber":482,"sourceCode":"                method = Some(\n                    args.get(i + 1)\n                        .ok_or_else(|| anyhow::anyhow!(\"missing value for --method\"))?\n                        .clone(),\n                );\n                i += 2;\n            }\n            \"--params\" => {\n                params = args\n                    .get(i + 1)\n                    .ok_or_else(|| anyhow::anyhow!(\"missing value for --params\"))?\n                    .clone();\n                i += 2;\n            }\n            \"-h\" | \"--help\" => {\n                println!(\"Usage: openhuman call --method <name> [--params '<json>']\");\n                return Ok(());\n            }\n            other => return Err(anyhow::anyhow!(\"unknown call arg: {other}\")),\n        }\n    }\n\n    let method = method.ok_or_else(|| anyhow::anyhow!(\"--method is required\"))?;\n    let params = parse_json_params(&params).map_err(anyhow::Error::msg)?;\n\n    // Raw calls bypass namespace parsing, but not the configured memory-driver\n    // binding. Without this gate an absent capability could still reach a\n    // destructive embedded handler because plain CLI invocations have no\n    // ambient CoreContext to filter the registry.\n    crate::core::cli_capability::ensure_capability_blocking(\n        all::capability_for_rpc_method(&method).flatten(),\n        &format!(\"openhuman call --method {method}\"),\n    )?;\n\n    // `call` invokes a JSON-RPC method that may run an orchestrator turn\n    // (e.g. `agent.chat`), so it needs the same roomy stack as the server.\n    let rt = tokio::runtime::Builder::new_multi_thread()","sourceCodeStart":464,"sourceCodeEnd":500,"githubUrl":"https://github.com/tinyhumansai/openhuman/blob/a221052e0df5b1f7598fceba7329fd1af95d6699/src/core/cli.rs#L464-L500","documentation":"`openhuman call` matches tokens by exact string: `--method`, `--params`, `-h`/`--help`. Everything else — equals-joined forms, typo'd flags, positional text — hits the catch-all and is echoed back verbatim. This keeps the raw-call surface minimal and predictable since it feeds the JSON-RPC dispatcher directly.","triggerScenarios":"`openhuman call --method=openhuman.x` (equals form unsupported); `--m openhuman.x` (abbreviation); `openhuman call openhuman.x` (positional, not supported).","commonSituations":"Habitual `key=value` flag syntax from other tools; abbreviating flags; trying to pass the method positionally as with some other CLIs.","solutions":["Use the exact space-separated form: `openhuman call --method <name> --params '<json>'`","Run `openhuman call --help` for the exact usage line","Remove positional arguments — the subcommand takes flags only"],"exampleFix":"# before\nopenhuman call --method=openhuman.config_get\n# after\nopenhuman call --method openhuman.config_get","handlingStrategy":"validation","validationCode":"# bash: only the two documented flags reach the subcommand\ncase \"${1:-}\" in\n  --method|--params) ;;\n  -h|--help) exec openhuman call --help ;;\n  *) echo \"unsupported call flag: $1 (use --method <name> | --params '<json>')\" >&2; exit 2 ;;\nesac","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Never use --method=name equals syntax or flag abbreviations with `call`","The method goes after --method as a separate token; positional methods are not supported","Wrap user-supplied values in quotes, not new flag tokens"],"tags":["cli","argument-parsing","json-rpc"],"backgroundTag":null,"analyzedSha":"a221052e0df5b1f7598fceba7329fd1af95d6699","analyzedAt":"2026-08-16T12:47:06.542Z","schemaVersion":2},"datasetVersion":"2026-08-16T13:17:31.715Z"}