name: consult-human description: Use when an agent needs a human decision, approval, or clarification. This skill explains how to set up and run consult-human for blocking and non-blocking human consultations, including ask flags, setup flows, config reset behavior, and storage/cache clearing commands. Better ask than assume. compatibility: Designed for Claude Code CLI with consult-human installed and available on PATH.
consult-human Skill
Use consult-human whenever an agent needs a human decision, approval, or clarification instead of assuming things.
Current CLI Surface
- When you want to understand the cli spec and you're lost, do
--help. Its supported universally in the command. consult-human ask [flags] <question>consult-human setup [flags]consult-human config <path|show|init|set|reset>consult-human storage <path|clear>consult-human skill <install>
Setup
- IMPORTANT: If you are running claude code as a VS Code extension and if you face
command not found: consult-human, the default~/.zshrc/~/.bashrcshell profiles are not loaded. Login profiles are sourced instead (~/.zshenv,~/.zprofile,~/.zlogin,~/.bash_profile,~/.bash_login).
Run consult-human setup before the first consultation or when re-linking a provider (ex Telegram).
setup auto-ensures the current consult-human binary directory is on PATH in the detected shell login profile in both interactive and non-interactive modes. It prints what it changed and does not require extra prompts for PATH.
Choose setup mode based on who is doing the setup:
- interactive mode (default): use when the user is driving the setup via their terminal.
--non-interactivemode: use when the agent will run steps turn-by-turn in via bash commands.
Supported setup flags:
--non-interactive: prints a list of setup steps without TTY prompts, and still auto-ensures shell PATH. Agent-friendly.--provider telegram: restrict setup to a specific messaging provider Telegram.--link-chat: wait for Telegram/startand savetelegram.chat_idwithout setup prompts.
Interactive Setup (User-Driven, TTY)
- Run
consult-human setup. - Follow instructions
Non-Interactive Setup (Agent-Driven, one-shot commands)
Use this mode when you want explicit steps without TTY or terminal interactivity. Agent-friendly. This mode still performs shell PATH ensure automatically.
consult-human setup --non-interactiveconsult-human setup --non-interactive --provider telegramconsult-human setup --provider telegram --link-chat
Reset and Reconfigure
- Reset all config:
consult-human config reset - Reset all config but keep storage/cache:
consult-human config reset --keep-storage - Reset Telegram only:
consult-human config reset --provider telegram - Reset Telegram only but keep storage/cache:
consult-human config reset --provider telegram --keep-storage - Re-run Telegram setup:
consult-human setup --provider telegram - Link Telegram chat non-interactively:
consult-human setup --provider telegram --link-chat - Explicitly clear storage/cache:
consult-human storage clear - Show storage/cache paths:
consult-human storage path - Clear Telegram storage/cache only:
consult-human storage clear --provider telegram - Show Telegram storage/cache path only:
consult-human storage path --provider telegram - Install skill for Claude Code:
consult-human skill install --target claude - Install skill for Codex:
consult-human skill install --target codex - Install skill for both:
consult-human skill install --target both
The Ask command
All ask flags are optional. The only required input is the positional <question>.
--choice <id:label|label>(optional, repeatable, default none): adds one selectable option for the human reply. Useid:labelfor stable IDs (example:A:Ship now) or plainlabelfor auto-generated IDs.--allow-other(optional, defaultfalse): allows a free-text answer outside the listed choices, so the human is not forced to pick only from predefined options. Requires at least one--choice.--provider <name>(optional, default is the config fieldactive_provider): overrides the active provider used for this ask call. Current active support is Telegram (whatsappis temporarily disabled).--timeout <duration in seconds>(optional, default configuredrequest_timeout): sets how longaskwaits before timing out for this call. Format examples:30s,5m,30m.
Blocking Consultation
Use this when execution must pause until the human answers.
- Run the bash command
consult-human ask "<question>". - Wait for command completion.
- Parse stdout JSON as the answer payload.
- Treat stderr as status/log output only.
Examples:
consult-human ask "Should I run the migrations now?"
consult-human ask \
--choice "A:Ship now" \
--choice "B:Wait for review" \
--allow-other \
"Please make a Release decision"
If you are Claude Code:
Execute the consult-human ask ... command via your Bash tool, setting the run_in_background parameter as false, and timeout as 600000 (10 min).
Non-Blocking Consultation
Use this when the agent should continue work while waiting for a human response.
The only way to do async/non-blocking consultation is via leveraging the capabilities in your (the agent's) harness.
If you are Claude Code:
Execute the consult-human ask ... command via your Bash tool, setting the run_in_background parameter as true, and timeout as 600000 (10 min).
Practical Notes
- Use
--timeoutfor longer waits, for example--timeout 30m. - If a request times out, send a new
askrequest. - Keep prompts concise and explicit for mobile replies.
- WhatsApp is temporarily disabled; use Telegram for active consultations.
Commands and Flags Reference
ask
Usage:
consult-human ask [flags] <question>
Flags:
--choice <id:label|label>: Add one choice. Repeatable.--allow-other: Allow free-text answer outside listed choices. Requires at least one--choice.--provider <name>: Override configured provider for this call.--timeout <duration>: Override request timeout for this call (30s,5m,30m).
setup
Usage:
consult-human setup [--provider telegram] [--link-chat]consult-human setup --non-interactive [--provider telegram]
Flags:
--non-interactive: Print checklist instead of prompting, while still auto-ensuring shell PATH.--provider <name>: Restrict setup to a provider (currentlytelegram).--link-chat: Wait for Telegram/startand save chat id without setup prompts.
config
Usage:
consult-human config pathconsult-human config showconsult-human config initconsult-human config set <key> <value>consult-human config reset [--provider telegram|whatsapp] [--keep-storage]
Flags:
config reset --provider <telegram|whatsapp>: Reset one provider section only.config reset --keep-storage: Skip clearing local storage/cache files during reset.
Supported keys for config set:
default-provider(aliases:provider,active_provider)request_timeouttelegram.bot_tokentelegram.chat_idtelegram.poll_interval_secondstelegram.pending_store_path(alias:telegram.store_path)whatsapp.recipientwhatsapp.store_path
storage
Usage:
consult-human storage pathconsult-human storage path --provider <all|telegram|whatsapp>consult-human storage clearconsult-human storage clear --provider <all|telegram|whatsapp>
Flags:
storage path --provider <all|telegram|whatsapp>: restrict path output scope.storage clear --provider <all|telegram|whatsapp>: restrict storage clearing scope.
skill installation (Claude Code / Codex / Agents skills)
Usage:
consult-human skill install [--target claude|codex|both] [--repo <path>] [--source <path>] [--copy]consult-human install-skill [--target claude|codex|both] [--repo <path>] [--source <path>] [--copy]
Defaults:
- source path defaults to
<config-dir>/SKILL.mdwhere<config-dir>is the directory ofconsult-human config path. - managed source is refreshed from the binary’s embedded skill template when it changes.
- install mode defaults to symlink.
consult-human storage clear(all scope) andconsult-human config resetdelete this managed skill file.skill installalso appends/updates an IMPORTANT consult-human reminder block in runtime instruction files:- Claude:
<base>/.claude/CLAUDE.md - Codex:
<base>/.codex/AGENTS.md - Agents (when present):
<base>/.agents/AGENTS.md <base>is home for global install, or--repopath for repo-scoped install.
- Claude:
Flags:
skill install --target <claude|codex|both>: choose runtime destination(s); default isboth.skill install --repo <path>: install under this repository path (<repo>/.claude/skills/...or<repo>/.codex/skills/...) instead of user-global directories.skill install --source <path>: read SKILL.md from a specific local file.skill install --copy: copy file contents instead of using symlinks.