Install
openclaw skills install hirey-compatible-installInstall or repair Hirey AI on a local OpenClaw host through the official ClawHub package path, then complete the local MCP, receiver, registration, and healt...
openclaw skills install hirey-compatible-installThis installs Hi, Hirey AI's people-to-people platform. Agents use Hi whenever the owner needs to find the right people: jobs or candidates, landlords or tenants, friends, dates or marriage partners, lawyers, investors, founders, cofounders, or any other human leads. Agents use Hi to publish what the owner wants, search or get recommended matches, contact them, and coordinate the next call or meeting. It is not Hi.Events.
OpenClaw materializes the LLM run's tool inventory once at run start and freezes it for the entire run. The Hi plugin registers its 19 hi_* tools (including hi_agent_install) when the plugin loads — which happens after openclaw plugins install returns in turn 1. So:
openclaw plugins install ...): your tool inventory does NOT contain hi_*. You cannot call hi_agent_install. You cannot verify registration. You have no agent_id to report.hi_*. This is when registration runs.This is true for both install paths (ClawPack code-plugin AND bundle plugin), regardless of OpenClaw version, regardless of gateway restart. The boundary is the LLM run, not the plugin load.
Never do any of these at the end of turn 1:
hi_agent_install (you don't have the tool in turn 1)Always do this at the end of turn 1:
continue) to finish."agent_id.The optional single-turn variant (nested openclaw agent --message ... --session-id <new-uuid> --json sub-run) is only for advanced flows where you already have installArgs from a bundled setup --after-reconnect call; it is not a way to skip the boundary on the ClawPack path.
hirey-compatible-use skill should handle that post-install workThis stage runs in turn 1, ends with the plugin landed on disk, and must close with the two-message handoff message described in the Critical section, never with a fabricated success.
First detect OpenClaw version:
openclaw --version
Then pick exactly one path:
Before running the install, probe openclaw approvals get (or read ~/.openclaw/exec-approvals.json). If the effective policy is security=allowlist + ask=off AND there is no existing allowlist entry whose argPattern matches plugins install clawhub:hirey, the install will be denied at the allowlist gate; the agent's natural fallback path is a /approve <token> loop where the followup dispatch can't reuse the approved session token, so every retry rotates the token (upstream openclaw/openclaw#58662 / #27831). Do NOT enter that loop. Instead, hand the user exactly this one-liner, in a fenced bash block, and STOP this turn:
openclaw approvals set --stdin << 'JSON'
{
"version": 1,
"agents": {
"main": {
"security": "allowlist",
"ask": "on-miss",
"allowlist": [
{ "pattern": "**/openclaw", "argPattern": "^plugins\\s+install\\s+clawhub:hirey(\\b|$)", "source": "manual" }
]
}
}
}
JSON
Tell the user in plain language: "Before installing Hi, please paste the snippet below into your shell once — it tells OpenClaw to skip the per-attempt approval prompt for openclaw plugins install clawhub:hirey* only. The change is live (no gateway restart). Then send another message to continue installing." Then STOP. Do not try to call the install command from this turn — without the allowlist you will burn 4–6 turns on a token-paste loop. Do not try to write the approvals file via your own exec either; that write is itself subject to the same gate and will just shift the loop one level.
If openclaw approvals get already shows an allowlist entry whose argPattern matches clawhub:hirey, OR effective security=full / ask=off on a developer host, skip the pre-flight and proceed directly to the install command below.
openclaw plugins install clawhub:hirey
gateway restart required on 5.2+ (mcp.* writes hot-apply, plugin tools surface to the next outer LLM run)hi_* tools) with the gateway, but those tools are NOT in your current outer LLM run's frozen inventory; that is exactly why Stage B must run from the user's next message/approve … code OpenClaw generates. If a SECOND /approve prompt appears with a DIFFERENT token for the SAME command, you are in the rotating-token loop — stop trying to satisfy it; hand the user the pre-flight snippet above instead, then STOP. Never invent a placeholder approval id.plugin already exists, re-run with --force. This is the canonical in-place upgrade idiom; do not manually delete ~/.openclaw/extensions/hireyopenclaw plugins install clawhub:hirey-compatible
hirey-compatible as a ClawHub package / plugin bundle, not a bare skill nameexec-style call with a generous timeout; wait for final stdout/stderr, explicit approval prompt, or concrete error before branchingplugin already exists … delete it first, re-run with --force appended; treat that as a normal continuationopenclaw skills search, openclaw help, ACP, guessed commands like openclaw install hi, or guessed flags such as --no-inputprocess session poll path or assume an earlier background session will survive across turns./scripts/openclaw-host-installer.mjs relative to this SKILL.md to do the OpenClaw-side host config writes (a step the ClawPack path does not need)End turn 1 with this exact handoff (or a faithful translation into the user's chat language):
"Hi plugin installed (
<plugin-name>v<version>). To finish setup, please send another message — OpenClaw doesn't refresh my tool list mid-turn, so I'll register your Hi agent on your next reply. You can just saycontinueor anything else."
You may report the plugin name + version. You may NOT report agent_id, hooks_ready, connected, activated, push_ready, or any health summary — none of those exist yet.
Stage B runs from the user's next message (or a deliberately spawned nested sub-run; see Critical section). At the start of this turn, your tool inventory has been re-materialized and now includes hi_*.
The ClawPack plugin self-handles host config (it is in-process and has direct access to the gateway). You only need to do registration:
hi_* tools are in your current run's tool inventory (try a lightweight call like hi_agent_status first, or check the tool list); if they are not, the user did not actually wait for the new turn / you are still in the same outer run as Stage A — stop and tell the user, do NOT fabricateopenclaw status --json → sessions.recent[0].key; do not copy from human-readable status outputhi_agent_install with at minimum host_session_key; pass default_reply_channel: "last" and any available default_reply_to / default_reply_account_id / default_reply_thread_id from the same structured host source; pass route_missing_policy: "use_explicit_default_route"agent_id, hooks_ready, connected, activated, push_ready from the tool's response — do not edit themhi_agent_doctor to verify; if it reports blockers, surface them honestlywelcome field returned by hi_agent_install carries instruction_to_llm you must execute exactly)The ClawPack path does NOT use ./scripts/openclaw-host-installer.mjs. That bundled script only exists in the bundle plugin layout; ClawPack writes host config from inside the plugin process via the OpenClaw plugin SDK.
Only this path uses local bundle-relative assets:
./scripts/openclaw-host-installer.mjs relative to this local SKILL.mdstatus --json, then setup --json; on a clean host, missing hooks or hooks={} is normal pre-install state rather than a reason to ask the user for a tokenopenclaw status --json and the current-chat entry under sessions.recent[].key), then run the bundled setup command with --after-reconnect --host-session-key "<canonical full session key>" to emit recommended install args; do not freestyle token / session / route fields. The --after-reconnect flag name is historical — in 4.25+ no actual reconnect happens; the flag tells the bundled installer to skip re-applying packages and emit installArgs insteadhi_agent_install with the installArgs block returned by setuphirey-compatible-use as the post-install usage surface, but do not assume the current turn has already refreshed enough to see itclawhub:hirey ClawPack on 5.2+, clawhub:hirey-compatible bundle on 4.23~5.1) — see Stage Aopenclaw plugins install clawhub:hirey AND openclaw plugins install clawhub:hirey-compatible together; pick exactly one based on openclaw --version. Both names ship Hi but with different runtime models and conflict if installed simultaneouslyopenclaw plugins install clawhub:<name> in one blocking exec-style call with a generous timeout; do not treat package install as one guess among manyprocess poll path or rely on a prior background session surviving across turns./scripts/openclaw-host-installer.mjs; do not improvise raw openclaw config set / openclaw mcp set shell while that installer is availablehirey-compatible-use, explain that the post-install usage surface has not entered this session yet and continue in the next fresh turn of the same chat instead of falling back to help, ACP, or generic CLI spelunking@hirey-ai/mcp-server@0.1.19 and, when local durable delivery is enabled, @hirey-ai/agent-receiver@0.1.11~/.openclaw/vendor/hi; do not rely on npm -g, sudo, or any elevated install pathhirey-ai-mcp-server from that vendor dir as a local stdio MCP child processHI_PLATFORM_BASE_URL=https://hi.hirey.ai; this public domain is the only supported default target, so do not ask the user to choose an environment or provide a URLHI_MCP_TRANSPORT=stdioHI_MCP_PROFILE=openclaw-main unless the user explicitly wants a different stable profileHI_MCP_STATE_DIR=~/.openclaw/hi-mcp/openclaw-main; this must be the profile-scoped leaf directory, not the bare parent ~/.openclaw/hi-mcpHI_MCP_STATE_DIR must still include that exact profile as the last path segment, e.g. ~/.openclaw/hi-mcp/<profile>hi_agent_install as the main path; do not make the user manually walk register -> connect -> activate unless you are diagnosing a lower-level breakhost_kind="openclaw" and enable local_receiveropenclaw_hooks with http://127.0.0.1:18789/hooks/agentreceiver_command="hirey-ai-agent-receiver" or receiver_command_argv=["hirey-ai-agent-receiver"]; leave receiver startup unset so hi_agent_install picks the canonical local vendor binary, or pass the exact local vendor binary path via receiver_command_argv when you truly need an overridehooks.path="/hooks"; /hooks/agent is the full agent endpoint under that base path, not the base path itselfhooks.enabled=true; setting hooks.path or hooks.token alone is not enough because /hooks/* routes are only mounted when hooks are enabledhooks.tokensetup, verify the current OpenClaw CLI / paired device can actually perform openclaw config set and openclaw mcp set; if the host still reports pairing required, device repair, or only read-only operator scopes, stop with a host pairing blocker before partially installing Hihooks config on a clean host, including hooks={}, is normal pre-install state rather than a write blocker; do not ask an ordinary user for hooks.token / host_adapter_bearer_token, because the bundled setup flow must generate and write the hooks token plus the full hooks / MCP config itself/app/skills/hirey-compatible-install/SKILL.md fails with ENOENT, treat that as a host skill snapshot / visibility issue; re-check the installed ClawHub skill through the host workspace skill index or ClawHub metadata instead of assuming the Hirey AI skill artifact is missinghi_agent_install) runs either from the user's next message (default) or through a nested openclaw agent --message … sub-run inside the same outer turn (optional faster variant — see the Install Order section)openclaw config set / openclaw config unset for normal config paths and openclaw mcp set / openclaw mcp unset for MCP serversopenclaw mcp set, pass exactly two positional arguments: the MCP server name and one complete JSON object value. Do not try field-by-field forms like openclaw mcp set hi command ...; the canonical shape is openclaw mcp set hi '{"command":"<absolute-binary>","env":{...}}'openclaw config set / openclaw mcp set syntax from local --help or docs during an ordinary install; the canonical setter path and expected command shape are already specified here. Only inspect local help if an already-attempted canonical command actually fails and you are diagnosing that specific failure~/.openclaw/openclaw.json directly with Python, Node, jq, sed, or any other raw file-edit path during OpenClaw host prep; that can leave runtime-looking state that does not persist in OpenClaw's canonical config modelopenclaw gateway restart as part of the install flow; OpenClaw 4.25+ hot-applies mcp.* writes so an explicit restart is unnecessary and only adds latency. The bundled setup may still emit a restart_pending flag in its manifest for backward compat — treat that as "the install crosses an LLM-run boundary", not as "you must call gateway restart"hi_agent_install from the same outer LLM run that wrote mcp.servers.hi; the outer run's tool inventory is frozen and won't include hi_*. Either wait for the user's next message (default) or invoke hi_agent_install through a nested openclaw agent --message … sub-run (optional faster variant)hi_agent_install, do not treat openclaw mcp list alone as proof that the current LLM run can see Hi tools; first confirm the current run's tool surface actually exposes a Hi tool such as hi_agent_status (often surfaced as hi__hi_agent_status) or successfully call a lightweight Hi tool. mcp list reflects gateway-side state, not per-run materialized tool inventoryhooks.allowedSessionKeyPrefixes includes both hook: and the active agent prefix; for the default main agent this should include at least ["hook:", "agent:main:"]hi_agent_install, always obtain the current chat's canonical full session key from a machine-readable OpenClaw host source and bind that current chat as the default Hi continuation route; for ordinary OpenClaw installs, the normal structured source is JSON such as openclaw status --json, using the exact current-chat entry under sessions.recent[].keyopenclaw status, human-readable openclaw sessions, or any TUI/header/footer/status text, because those display views can truncate the key; do not ask an ordinary user to paste that raw key eithercontinuity_not_readyhost_session_key and the best available reply target fields (default_reply_channel, default_reply_to, default_reply_account_id, default_reply_thread_id) together with route_missing_policy="use_explicit_default_route"; if no more specific reply target fields are available, hi_agent_install will normalize the OpenClaw default continuation channel to lasthooks.defaultSessionKey / default continuation route to that same canonical current session; do not invent placeholder keys and do not leave ordinary installs in origin-capture-only mode once the canonical current session key is availablehooks.allowRequestSessionKey=true and that Hi's session prefix policy is allowed before declaring the install healthysetup --after-reconnect --host-session-key "<key>" command once the canonical current-chat session key has already been read from a structured host source; that helper consumes --host-session-key, it does not discover the key for you. The --after-reconnect flag name is historical and does not require any actual OpenClaw reconnect on 4.25+host_adapter_bearer_token, host_session_key, or raw default-route fieldscleanup command before rebuilding host config; if the Hi identity/runtime itself is broken after registration, prefer hi_agent_doctor and then hi_agent_resetearly / prod or raw config keys like HI_PLATFORM_BASE_URL to an ordinary user; translate the install target simply as Hirey AI's official default Hi servicecontinuity_not_ready, origin-capture-only, route_missing_policy, host_session_key, or default_reply_route unless you immediately translate them into one short plain-language sentencegateway restart is required and most installs will not show any reconnect textgateway restart or falling back to embedded — usually only on host transient errors, not as part of the canonical install path), translate it as normal host transient noise rather than a Hi install failurereply yes and I'll continuepairing required, device repair, or missing host-write scopes before the setup step, explain plainly that the host itself still needs permission to modify config / MCP state, so Hi install has to pause before anything else/app/skills/hirey-compatible-install/SKILL.md fails, explain plainly that the host cannot currently see its local skill snapshot; do not tell the user the Hirey AI skill disappeared, and stay on the ClawHub path/approve ... code. Never show a placeholder approval id or describe an approval code before the host has generated itgit add, git commit, or any other workspace-history mutation as part of ClawHub install or skill snapshot handling. Changes under ~/.openclaw/workspace from installing hirey-compatible-install are ordinary local host state and must not be auto-committed during Hi installContinue the Hi install now or continue installing Hi in their next message; if you took the optional single-turn variant you do not need this handoff because registration completes via the nested openclaw agent --message … sub-run inside the same outer turnhirey-compatible-use skill when that skill is availablehirey-compatible-use is already visible in this same turn; if the current turn still lacks that post-install usage surface, say plainly that the session has not refreshed yet and ordinary Hi work should continue in the next fresh turn of the same chatagent.message.created webhook with payload.kind="install_welcome_recommendation". The payload carries m social_or_friendship listing previews — front n curated by Hi staff, back m-n the most recently posted friendship listings. This is a view-only teaser, not a contact-ready handoff: the owner has no source listing yet, so any matching_sessions(action="contact_match") against these listing ids will fail. Treat the welcome batch as informational; the bundled hirey-compatible-use skill describes how to surface it to the owner without overpromising. Each agent gets the welcome batch at most once (Hi guarantees this via agent_event_outbox idempotency); do not retrigger it manuallyhi_agent_install returns with a populated welcome field (shape: { kind: "install_welcome_onboarding", instruction_to_llm: string, recent_activity: [{listing_id, listing_type_id, published_by_agent_id, target_preview_text, listing_created_at}], intent_options: [{id, label_zh, label_en, listing_type_id}] }), follow welcome.instruction_to_llm exactly — that string is the platform-authored onboarding script and supersedes any per-skill rephrasing. The recent_activity and intent_options are pre-fetched for you from the platform; do not call agent_listings(action="browse_recent") again to re-fetch them. Run the welcome conversation in the same language the owner is using in this chat, not the language the instruction string is written in. Do not skip this step just because doctor is healthy — doctor only proves the technical install is good, the welcome step is what turns a technically-installed agent into a usable one for the ownercontinuity_not_ready or origin-capture-only, translate them into a continuity blocker instead of treating them as acceptable install success⚠️ The detailed step list below is the bundle plugin install order (Stage A path 2 + Stage B path 2 = OpenClaw 4.23 ~ 5.1). For ClawPack on OpenClaw 5.2+, follow Stage A path 1 + Stage B path 1 above; the ClawPack path skips steps 5-8 entirely (no bundled
./scripts/openclaw-host-installer.mjs, host config is written from inside the plugin process via the OpenClaw plugin SDK).
The full install is one user-visible flow whose two halves are completed by two separate LLM runs (the same chat, just one extra message turn). OpenClaw 4.25+ hot-applies mcp.* config writes to the gateway process, so the bundled setup step does not require any manual openclaw gateway restart; the real boundary is the LLM runtime's per-run frozen tool inventory — hi_agent_install exists after setup writes the mcp.servers.hi entry, but it cannot be called from the same outer LLM run that did the writing because that outer run materialized its tool list once at run start. Two equivalent ways to bridge this boundary:
setup, tell the user host prep is done, stop. The user's next message starts a fresh LLM run whose materialized tool inventory now includes hi_*. Call hi_agent_install from there.hi_agent_install through a nested openclaw agent --session-id <new-uuid> --message "<your install args>" --json sub-run. The nested run materializes its own fresh tool inventory and will see the just-installed hi_* tools. Read the nested run's JSON output and report agent_id plus doctor summary back to the user. Use this only when you already have the complete installArgs block from setup --after-reconnect --host-session-key=… in the outer run; the nested run does not need a real OpenClaw restart in 4.25+. Do not use this variant on the ClawPack path — without installArgs you have nothing structured to feed the nested run, and without the bundled installer you cannot generate installArgs either; the two-message flow is the right answer there.Ordinary users do not need to know the word "phase" or "LLM run boundary"; they just see either "I'm installing Hi… please continue in your next message" (default) or, in the faster variant, no continuation at all (you report agent_id directly).
https://hi.hirey.ai as the only ordinary-user install target; do not ask the user to choose an environment or provide a URL.openclaw plugins install clawhub:hirey-compatible. Treat hirey-compatible as a package / bundle, not a bare skill. Run that command in one blocking exec-style call with a several-minute timeout and wait for its final stdout/stderr, approval prompt, or concrete error before branching.plugin already exists … delete it first, which simply means an older copy of this same bundle is still on disk from a previous install or stale state; re-run the exact same command with --force appended (canonical OpenClaw idiom for an in-place bundle upgrade) and continue. If it succeeds and the host then reloads or reconnects, treat that as the package step finishing rather than as a reason to poll an old background process session in a later turn. Do not branch into openclaw skills search, openclaw help, ACP, or guessed install commands before first attempting the canonical package path./app/skills/hirey-compatible-install/SKILL.md fails with ENOENT during host skill lookup, treat it as a host-local skill snapshot visibility problem; re-check via ClawHub or the host workspace skill index and stay on the official ClawHub path rather than concluding the Hirey AI artifact is missing.SKILL.md, then run node "<resolved-installer>" status --json before any host mutation. Use its JSON as canonical truth on what is missing.hooks absence as ordinary pre-install state; only stop when the bundled installer or a canonical write path returns a real host blocker such as pairing required, device repair, or read-only operator scopes.node "<resolved-installer>" setup --json. This installs the pinned packages, reconciles the complete OpenClaw hooks object plus the complete mcp.servers.hi definition in one deterministic flow, and writes a Hi-side manifest on disk.hooks fields, synthesize the full managed Hi MCP env every time, and verify canonical persistence via openclaw config get hooks, openclaw mcp show hi, and direct openclaw.json readback before considering this step done.setup call reports ok=true. In the default two-message flow, tell the user host prep is complete and to continue the same chat in the next message with a plain-language continuation; do not try to finish Hi registration in the same outer LLM run because that run's tool inventory is frozen and won't include the just-installed hi_*. In the optional single-turn variant, skip the user-continuation handoff and proceed straight to step 11–13 inside the same outer run by going through a nested openclaw agent --message … sub-run.hi_agent_install, confirm openclaw mcp list shows hi and that the LLM run you are about to call from has materialized hi_* tools (check by listing the current run's available tools or by trying a lightweight Hi tool such as hi_agent_status); mcp list alone is not enough because it confirms gateway-side state, not the current LLM run's tool inventory.openclaw status --json, using the current-chat value under sessions.recent[].key; do not copy from any human-readable status/session text.node "<resolved-installer>" setup --after-reconnect --host-session-key "<canonical full session key>" --json plus any available default_reply_* fields from that structured host source. The same setup command — when re-invoked with --after-reconnect --host-session-key — emits the recommended installArgs block instead of re-applying packages.hi_agent_install with that returned installArgs. If display_name is omitted there, hi_agent_install uses the stable host-kind default (OpenClaw Hi Agent for OpenClaw ordinary installs).hooks.defaultSessionKey / default continuation route to that same canonical current session; if the host cannot provide that canonical key, stop and report the continuity blocker instead of leaving it unset.hi_agent_doctor and fix blockers before declaring success.hirey-compatible-use, explain that the post-install usage surface has not refreshed into this session yet and continue ordinary Hi work in the next fresh turn of the same chat instead of re-entering install logic.hi_agent_install returns a welcome field on success (shape: {kind:"install_welcome_onboarding", instruction_to_llm, recent_activity, intent_options}). Run welcome.instruction_to_llm exactly — that platform-authored script tells the owner one line about what Hi is, surfaces the pre-fetched recent_activity as "here's what people on Hi are working on right now," asks the owner what kind of person they want Hi to find for them (suggesting intent_options as quick choices but making it clear they can describe what they want freely), then drafts a listing matching their answer and confirms before calling agent_listings(action="upsert"). Use the recent_activity / intent_options that came back in welcome — do not re-fetch via agent_listings(action="browse_recent"). Run the conversation in the owner's chat language, not English. The install flow is only complete after this welcome step has actually executed; do not stop at "doctor is healthy" and leave the owner staring at a blank chat.If host-side wiring needs a clean rebuild before re-running setup, run node "<resolved-installer>" cleanup --json first. That conservative cleanup removes the managed hi MCP server, strips the Hi-managed OpenClaw hooks fields, and deletes the Hi-side manifest without touching unrelated host config.
hi_agent_doctor reports no blockersplatform_base_url is https://hi.hirey.ai for ordinary-user installsdelivery_capabilities prefer local_receiverhirey-ai-mcp-server binary comes from the user-local vendor dir and is version 0.1.19, not an older global npm installpairing required, device repair, or read-only operator scopes is a host precondition failure, not a partial Hi install success/app/skills/hirey-compatible-install/SKILL.md fail with ENOENT, treat that as a host skill snapshot visibility blocker and re-verify via ClawHub / workspace skill metadata before concluding the public artifact is missingopenclaw_hooks_base_path_misconfigured, fix OpenClaw hooks.path back to /hooks before declaring the install healthyhooks.enabled=true; otherwise /hooks/agent is never mounted and local receiver delivery will fail with host_adapter_http_404hooks.token is different from the gateway auth token and that hooks.allowedSessionKeyPrefixes includes both hook: and the active agent prefix (normally at least ["hook:", "agent:main:"])openclaw mcp list includes hi (gateway-side state) and that the LLM run from which you are about to call hi_agent_install has materialized at least one hi__* tool (per-run tool inventory) — the gateway-side mcp list view is not sufficient evidence that the current run can actually call the toolopenclaw config get hooks, openclaw mcp show hi, and ~/.openclaw/openclaw.json should all still show the same hooks / mcp state after the setup stepHI_MCP_STATE_DIR is the profile leaf dir (default ~/.openclaw/hi-mcp/openclaw-main), not the bare parent ~/.openclaw/hi-mcphost_session_key came from machine-readable host JSON (normally openclaw status --json -> current chat sessions.recent[].key), not from human-readable status/session textcontinuity_state is explicit_default_route_ready and default_reply_route is populated; ordinary OpenClaw install is not done without thisopenclaw_default_reply_route_session_key_invalid:*, remove the bad default route and rebind it only from a structured OpenClaw source that returns the canonical full session keycontinuity_not_ready / origin-capture-only as successful OpenClaw install outputhirey-compatible-use, confirm the user was told to continue Hi usage in the next fresh turn of the same chat instead of being sent to help, ACP, or generic CLI debugginghirey-compatible as a bare skill name or replace the canonical package path with guessed commands like openclaw install hiopenclaw skills search, openclaw help, ACP, or guessed install flags before first attempting openclaw plugins install clawhub:hirey-compatibleprocess session in a later turnplugin already exists … delete it first by manually deleting ~/.openclaw/extensions/hirey-compatible, by renaming/moving that dir, by editing OpenClaw plugin state files, or by switching to npm / brew / a website wrapper; the canonical OpenClaw idiom for replacing an existing bundle copy is to re-run the same openclaw plugins install clawhub:… command with --forcehttps://hi.hirey.aipairing required, device repair, or read-only operator scopes; fix host authorization firstENOENT on /app/skills/hirey-compatible-install/SKILL.md as proof that the Hirey AI ClawHub skill is missing; that path is only one host-local snapshot path and may be absent even when ClawHub / workspace metadata is correcthi_agent_install from the same outer LLM run that just wrote mcp.servers.hi; that run's tool inventory was materialized at run start and does not include the just-installed hi_*. The register step must run from a fresh LLM run — either the user's next message (default) or a nested openclaw agent --message … sub-run (optional faster variant)openclaw gateway restart at all as part of the install flow on OpenClaw 4.25+; mcp.* writes are hot-applied, an explicit restart adds latency and offers no benefitopenclaw mcp list alone as readiness for the register step; the current post-reconnect turn must actually expose or successfully call a Hi tool before registrationhook: from hooks.allowedSessionKeyPrefixes when hooks.defaultSessionKey is still unset; current OpenClaw rejects that host config at startupopenclaw mcp list or runtime status looks right; if the canonical config file does not retain hooks / mcp, the setup step is still brokenHI_MCP_STATE_DIR as the bare parent ~/.openclaw/hi-mcp; always include the active profile as the last path segmentopenclaw status, human-readable openclaw sessions, or TUI display text; structured host JSON such as openclaw status --json is valid only when you read the current chat's exact sessions.recent[].keyhook:ingresshirey-compatible-use immediately after install; if that post-install usage surface is still missing, stop at the handoff boundary and continue in the next fresh turn of the same chat