Back to skill

Security audit

Install Hirey AI on OpenClaw

Security checks for vulnerabilities and agentic risk

Overview

The skill appears purpose-built to install Hirey AI, but it creates persistent authenticated routing into OpenClaw agent sessions and installs external packages with reviewability gaps.

Install only if you are comfortable giving Hirey AI a persistent local receiver, hook token, and default route back into this OpenClaw chat. Review the external service's privacy posture and prefer tighter session scoping or explicit confirmation before binding future Hi messages into main agent sessions.

Vulnerability Patterns
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
  • Insecure DependenciesIntroduces malicious components through unsafe dependency sources
  • Skill Instruction HijackingAlters the agent's session goals or safety constraints when the skill loads
  • Agent Memory PoisoningWrites attacker-controlled rules into memory that affect later sessions
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
Findings (2)

T08 · Insecure Dependencies

Error
Location
scripts/openclaw-host-installer.mjs:585
Finding

Installer downloads and executes third-party packages without integrity verification

Content
View full analysis

Vulnerability Details

File Location: scripts/openclaw-host-installer.mjs:17-20, 585-613; related instructions in SKILL.md:24-29, 50, 136-142
Vulnerability Type: Supply-chain exposure through externally retrieved executable dependencies
Risk Level: High

Vulnerable Code

js
export const PINNED_PACKAGES = Object.freeze({
  hiMcpServer: '@hirey-ai/mcp-server@0.1.22',
  hiAgentReceiver: '@hirey-ai/agent-receiver@0.1.12',
});
js
async function installPinnedPackages(options, paths, snapshot) {
  const packageVersionsOk = snapshot.packageVersions.hiMcpServer === '0.1.22'
    && snapshot.packageVersions.hiAgentReceiver === '0.1.12'
    && snapshot.hiMcpBinaryExists
    && snapshot.hiReceiverBinaryExists;
  if (options.skipPackageInstall || packageVersionsOk) {
    return { changed: false, skipped: !!options.skipPackageInstall };
  }

  const result = await execFileAsync('npm', [
    'install',
    '--prefix',
    paths.vendorDir,
    '--no-audit',
    '--no-fund',
    PINNED_PACKAGES.hiMcpServer,
    PINNED_PACKAGES.hiAgentReceiver,
  ], {
    encoding: 'utf8',
    maxBuffer: 8 * 1024 * 1024,
  });

  return {
    changed: true,
    skipped: false,
    stdout: result.stdout || '',
    stderr: result.stderr || '',
  };
}

The Skill also directs the agent to install a mutable ClawHub package:

text
openclaw plugins install clawhub:hirey-ai

Technical Analysis

Setup downloads executable components from ClawHub and the npm registry. Although the npm package versions are exact, no lockfile, package integrity hash, signature, or trusted-publisher verification is included in the audited project. An exact version prevents ordinary version drift but does not protect against registry compromise, account takeover, republishing where supported, or a compromised package artifact.

Standard npm install behavior may exe ...[truncated 2085 chars]

Remediation
View remediation

Remediation Suggestions

  1. Pin the ClawHub package to an immutable version and preferably a verified content digest.
  2. Commit a lockfile containing npm integrity metadata and use a deterministic installation command such as npm ci.
  3. Verify package signatures or expected SHA-256 hashes before executing downloaded code.
  4. Use --ignore-scripts during installation where package functionality permits it. If lifecycle scripts are essential, document and independently review each required script.
  5. Avoid --no-audit, or perform an equivalent vulnerability scan and fail installation for disallowed critical findings.
  6. Review and pin transitive dependencies, not only the two top-level package versions.
  7. Keep the versions documented in SKILL.md, installed by the script, and checked during validation identical.
  8. Run retrieved components in a sandbox with narrowly scoped filesystem, network, environment-variable, and OpenClaw tool access.
  9. Record the verified artifact hashes and installed versions in the manifest to support subsequent integrity checks.

T05 · Unauthorized Access and Privilege Escalation

Warning
Location
scripts/openclaw-host-installer.mjs:709
Finding

Remote integration receives broad authenticated agent-session routing capability

Content
View full analysis

Vulnerability Details

File Location: scripts/openclaw-host-installer.mjs:205-225, 709-731; related instructions in SKILL.md:78-95, 145-149
Vulnerability Type: Overbroad webhook authorization and session-routing privilege
Risk Level: Medium

Vulnerable Code

js
export function buildManagedHooksConfig(args) {
  const currentHooks = isPlainObject(args.currentHooks) ? deepClone(args.currentHooks) : {};
  const token = normalizeText(args.hooksToken);
  if (!token && args.allowMissingToken !== true) throw new Error('missing_hooks_token');

  const result = {
    ...currentHooks,
    enabled: true,
    path: normalizeHooksPath(args.hooksPath),
    allowRequestSessionKey: true,
    allowedSessionKeyPrefixes: mergeAllowedSessionKeyPrefixes(
      currentHooks.allowedSessionKeyPrefixes,
      normalizeText(args.activeAgentPrefix) || DEFAULT_ACTIVE_AGENT_PREFIX,
    ),
  };
  if (token) result.token = token;
  return result;
}
js
export function buildPhase2InstallArgsPayload(args) {
  const hostSessionKey = validatePhase2HostSessionKey(args.hostSessionKey);
  const hooksToken = normalizeText(args.hooksToken);
  if (!hooksToken) throw new Error('missing_phase1_hooks_token');
  const payload = {
    host_kind: 'openclaw',
    enable_local_receiver: true,
    receiver_transport: 'claim',
    receiver_start: true,
    host_adapter_kind: 'openclaw_hooks',
    host_adapter_bearer_token: hooksToken,
    host_session_key: hostSessionKey,
    route_missing_policy: 'use_explicit_default_route',
    run_doctor: true,
  };
  const displayName = normalizeText(args.displayName);
  if (displayName) payload.display_name = displayName;
  if (normalizeText(args.defaultReplyChannel)) payload.default_reply_channel = normalizeText(args.defaultReplyChannel);
  if (normalizeText(args.defaultReplyTo)) payload.default_reply_to = normalizeText(args.defaultReplyTo);
  if 
...[truncated 2842 chars]
Remediation
View remediation

Remediation Suggestions

  1. Route externally delivered Hi events into a dedicated, immutable hook: session rather than allowing the general agent:main: namespace.
  2. If main-session continuation is essential, authorize only the exact canonical session key instead of an entire prefix.
  3. Apply strict event schemas and allow only explicitly supported event types and fields.
  4. Add cryptographic event signatures independent of the bearer token, including timestamp, nonce, intended host, event type, and body.
  5. Enforce timestamp windows and nonce or event-ID replay protection.
  6. Treat webhook content as untrusted data and prevent it from introducing agent instructions without an explicit trust-boundary check.
  7. Require user confirmation for sensitive tool actions originating from webhook-delivered messages.
  8. Store the hook token with restrictive filesystem permissions, avoid returning it in ordinary status output, and redact it from logs and errors.
  9. Rotate the token after suspected exposure and revoke or remove it during cleanup.
  10. Separate receiver privileges from other MCP capabilities and sandbox the receiver process with minimal filesystem and network access.
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Rogue AgentSelf-Modification, Session Persistence
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
Findings (17)

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

Scanner excerpt · SKILL.md (reported line 41)May include surrounding context.

md
- resolve `./scripts/openclaw-host-installer.mjs` relative to this local `SKILL.md`

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

Scanner excerpt · SKILL.md (reported line 52)May include surrounding context.

md
- resolve `./scripts/openclaw-host-installer.mjs` relative to this local `SKILL.md`

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

Scanner excerpt · SKILL.md (reported line 41)May include surrounding context.

md
- resolve `./scripts/openclaw-host-installer.mjs` relative to this local `SKILL.md`

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

Scanner excerpt · SKILL.md (reported line 130)May include surrounding context.

md
- resolve `./scripts/openclaw-host-installer.mjs` relative to this local `SKILL.md`

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The skill drives installation and use of an external people-matching service handling highly sensitive personal categories such as jobs, housing, friendship, dating, lawyers, and investors, yet it does not require a clear user-facing disclosure that personal data will be transmitted off-host to Hirey AI. This creates a meaningful privacy and consent risk because users may provide sensitive third-party or intimate data under the assumption the action is local host configuration rather than external data sharing.

Content

No source excerpt is available for this finding.

Autonomous Decision Making

Medium
Category
Excessive Agency
Confidence
86% confidence
Finding

The skill instructs the agent to make consequential configuration and service-selection decisions automatically, including binding the installation to a specific external service and suppressing user choice for environment or URL. In a workflow that can affect privacy, data destination, and account linkage, removing informed user choice increases the risk of unintended external data disclosure and misconfiguration.

Content

Scanner excerpt · SKILL.md (reported line 58)May include surrounding context.

md
- use the official Hi packages at the current pinned public release versions: `@hirey-ai/mcp-server@0.1.19` and, when local durable delivery is enabled, `@hirey-ai/agent-receiver@0.1.11`
- install the Hi npm packages into a user-writable vendor dir under `~/.openclaw/vendor/hi`; do not rely on `npm -g`, `sudo`, or any elevated install path
- mount `hirey-ai-mcp-server` from that vendor dir as a local `stdio` MCP child process
- for ordinary user installs, always set `HI_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 URL
- keep `HI_MCP_TRANSPORT=stdio`
- keep `HI_MCP_PROFILE=openclaw-main` unless the user explicitly wants a different stable profile
- for the default OpenClaw profile, set `HI_MCP_STATE_DIR=~/.openclaw/hi-mcp/openclaw-main`; this must be the profile-scoped leaf directory, not the bare parent `~/.openclaw/hi-mcp`

Session Persistence

Medium
Category
Rogue Agent
Confidence
88% confidence
Finding

The skill instructs automatic generation and persistence of hooks tokens plus full hooks/MCP configuration, enabling session-bound inbound delivery and persistent routing state on the host. This is dangerous without explicit user awareness because it establishes durable authenticated ingress and session persistence that could expose future sensitive messages if misrouted, over-broadly scoped, or enabled on a shared host.

Content

Scanner excerpt · SKILL.md (reported line 72)May include surrounding context.

md
- enable OpenClaw hook ingress with `hooks.enabled=true`; setting `hooks.path` or `hooks.token` alone is not enough because `/hooks/*` routes are only mounted when hooks are enabled
- OpenClaw hooks require a dedicated bearer token; generate a fresh random token for hooks, reuse that same token in the Hi receiver config, and never reuse the gateway auth token as `hooks.token`
- before running `setup`, 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 Hi
- a missing `hooks` 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
- if a local hard-path read like `/app/skills/hirey-ai-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 missing
- treat OpenClaw host prep and Hi registration as two steps separated by a per-run-tool-inventory boundary that the OpenClaw LLM runtime forces (the LLM run's tool list is materialized once at run start and frozen; newly-installed MCP servers become callable only from the next LLM run, *not* the same outer run that wrote them): the **setup** step installs packages and writes complete host config / MCP wiring; the **register** step (calling `hi_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)
- during the setup step, call the bundled ins
...[truncated 25 chars]

Skill Enumeration

Medium
Category
Agent Snooping
Confidence
80% confidence
Finding

Skill enumerates or reads other installed skills. Access to other skills' SKILL.md files or the skills directory reveals prompt instructions, capabilities, and secrets that should be invisible to peer skills.

Content

Scanner excerpt · SKILL.md (reported line 73)May include surrounding context.

md
- OpenClaw hooks require a dedicated bearer token; generate a fresh random token for hooks, reuse that same token in the Hi receiver config, and never reuse the gateway auth token as `hooks.token`
- before running `setup`, 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 Hi
- a missing `hooks` 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
- if a local hard-path read like `/app/skills/hirey-ai-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 missing
- treat OpenClaw host prep and Hi registration as two steps separated by a per-run-tool-inventory boundary that the OpenClaw LLM runtime forces (the LLM run's tool list is materialized once at run start and frozen; newly-installed MCP servers become callable only from the next LLM run, *not* the same outer run that wrote them): the **setup** step installs packages and writes complete host config / MCP wiring; the **register** step (calling `hi_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)
- during the setup step, call the bundled installer in one blocking command; do not split raw host config mutations across multiple tool calls while that installer is available
- during the setup step, use only OpenClaw's canon
...[truncated 25 chars]

Skill Enumeration

Medium
Category
Agent Snooping
Confidence
80% confidence
Finding

Skill enumerates or reads other installed skills. Access to other skills' SKILL.md files or the skills directory reveals prompt instructions, capabilities, and secrets that should be invisible to peer skills.

Content

Scanner excerpt · SKILL.md (reported line 106)May include surrounding context.

md
- OpenClaw hooks require a dedicated bearer token; generate a fresh random token for hooks, reuse that same token in the Hi receiver config, and never reuse the gateway auth token as `hooks.token`
- before running `setup`, 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 Hi
- a missing `hooks` 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
- if a local hard-path read like `/app/skills/hirey-ai-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 missing
- treat OpenClaw host prep and Hi registration as two steps separated by a per-run-tool-inventory boundary that the OpenClaw LLM runtime forces (the LLM run's tool list is materialized once at run start and frozen; newly-installed MCP servers become callable only from the next LLM run, *not* the same outer run that wrote them): the **setup** step installs packages and writes complete host config / MCP wiring; the **register** step (calling `hi_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)
- during the setup step, call the bundled installer in one blocking command; do not split raw host config mutations across multiple tool calls while that installer is available
- during the setup step, use only OpenClaw's canon
...[truncated 25 chars]

Skill Enumeration

Medium
Category
Agent Snooping
Confidence
80% confidence
Finding

Skill enumerates or reads other installed skills. Access to other skills' SKILL.md files or the skills directory reveals prompt instructions, capabilities, and secrets that should be invisible to peer skills.

Content

Scanner excerpt · SKILL.md (reported line 129)May include surrounding context.

md
- OpenClaw hooks require a dedicated bearer token; generate a fresh random token for hooks, reuse that same token in the Hi receiver config, and never reuse the gateway auth token as `hooks.token`
- before running `setup`, 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 Hi
- a missing `hooks` 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
- if a local hard-path read like `/app/skills/hirey-ai-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 missing
- treat OpenClaw host prep and Hi registration as two steps separated by a per-run-tool-inventory boundary that the OpenClaw LLM runtime forces (the LLM run's tool list is materialized once at run start and frozen; newly-installed MCP servers become callable only from the next LLM run, *not* the same outer run that wrote them): the **setup** step installs packages and writes complete host config / MCP wiring; the **register** step (calling `hi_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)
- during the setup step, call the bundled installer in one blocking command; do not split raw host config mutations across multiple tool calls while that installer is available
- during the setup step, use only OpenClaw's canon
...[truncated 25 chars]

Skill Enumeration

Medium
Category
Agent Snooping
Confidence
80% confidence
Finding

Skill enumerates or reads other installed skills. Access to other skills' SKILL.md files or the skills directory reveals prompt instructions, capabilities, and secrets that should be invisible to peer skills.

Content

Scanner excerpt · SKILL.md (reported line 155)May include surrounding context.

md
- OpenClaw hooks require a dedicated bearer token; generate a fresh random token for hooks, reuse that same token in the Hi receiver config, and never reuse the gateway auth token as `hooks.token`
- before running `setup`, 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 Hi
- a missing `hooks` 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
- if a local hard-path read like `/app/skills/hirey-ai-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 missing
- treat OpenClaw host prep and Hi registration as two steps separated by a per-run-tool-inventory boundary that the OpenClaw LLM runtime forces (the LLM run's tool list is materialized once at run start and frozen; newly-installed MCP servers become callable only from the next LLM run, *not* the same outer run that wrote them): the **setup** step installs packages and writes complete host config / MCP wiring; the **register** step (calling `hi_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)
- during the setup step, call the bundled installer in one blocking command; do not split raw host config mutations across multiple tool calls while that installer is available
- during the setup step, use only OpenClaw's canon
...[truncated 25 chars]

Skill Enumeration

Medium
Category
Agent Snooping
Confidence
80% confidence
Finding

Skill enumerates or reads other installed skills. Access to other skills' SKILL.md files or the skills directory reveals prompt instructions, capabilities, and secrets that should be invisible to peer skills.

Content

Scanner excerpt · SKILL.md (reported line 179)May include surrounding context.

md
- OpenClaw hooks require a dedicated bearer token; generate a fresh random token for hooks, reuse that same token in the Hi receiver config, and never reuse the gateway auth token as `hooks.token`
- before running `setup`, 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 Hi
- a missing `hooks` 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
- if a local hard-path read like `/app/skills/hirey-ai-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 missing
- treat OpenClaw host prep and Hi registration as two steps separated by a per-run-tool-inventory boundary that the OpenClaw LLM runtime forces (the LLM run's tool list is materialized once at run start and frozen; newly-installed MCP servers become callable only from the next LLM run, *not* the same outer run that wrote them): the **setup** step installs packages and writes complete host config / MCP wiring; the **register** step (calling `hi_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)
- during the setup step, call the bundled installer in one blocking command; do not split raw host config mutations across multiple tool calls while that installer is available
- during the setup step, use only OpenClaw's canon
...[truncated 25 chars]

Autonomous Decision Making

Medium
Category
Excessive Agency
Confidence
89% confidence
Finding

The skill directs the agent to bind the current chat/session by default and explicitly says not to ask the user whether to leave it unbound, despite that routing choice controlling where future service-originated messages and potentially sensitive recommendations will be delivered. That is an autonomy and privacy issue because it can establish persistent communications and webhook-driven message delivery without explicit user authorization.

Content

Scanner excerpt · SKILL.md (reported line 114)May include surrounding context.

md
- after install succeeds, ordinary Hi work such as publishing listings, finding matches, contacting collaborators, and arranging meetings should switch to the bundled `hirey-ai-use` skill when that skill is available
- after install succeeds, do not promise that `hirey-ai-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 chat
- after install succeeds, the platform will (within a few minutes of stable healthy install) push a one-time **welcome recommendation batch** as an `agent.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-ai-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 manually
- if the host cannot bind the current chat from a structured host source, explain plainly that the install is blocked until OpenClaw can provide the canonical full session key; do not ask the user whether to leave it unbound
- if OpenClaw surfaces terms like `continuity_not_ready` or `origin-capture-only`, translate them into a continuity blocker instead of treating them as acceptable install success

## Install Order

Autonomous Decision Making

Medium
Category
Excessive Agency
Confidence
80% confidence
Finding

Skill enables autonomous high-impact decisions without human-in-the-loop verification. Critical operations (destructive commands, financial transactions, data deletion) should require explicit user confirmation.

Content

Scanner excerpt · SKILL.md (reported line 126)May include surrounding context.

md
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).

1. Treat Hirey AI's official default Hi service at `https://hi.hirey.ai` as the only ordinary-user install target; do not ask the user to choose an environment or provide a URL.
2. If the local bundle is not already present, start with the canonical ClawHub package command `openclaw plugins install clawhub:hirey-ai`. Treat `hirey-ai` 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.
3. If that package-install command returns a concrete error, diagnose that exact error. The one common false-positive is `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.
4. Once the package is installed locally, if a local hard-path read like `/app/skills/hirey-ai-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.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
88% confidence
Finding

The file instructs the agent to always set a single service endpoint and explicitly not ask the user to choose an environment or provide a URL. While this is an environment constraint rather than a human language choice, it is the closest policy-style natural-language restriction present and is imposed unconditionally without user choice or justification beyond being the default.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
90% confidence
Finding

This code file contains Chinese-language comments and later Chinese-language explanatory comments in a primarily English tool, which can conflict with an organizational language policy if English is expected by default. There is no indication that users or maintainers can opt into a preferred language or that the locale choice is intentionally constrained.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
89% confidence
Finding

These inline comments mix Chinese with English in operational explanations, but the file does not document any locale requirement or provide language selection. Under a natural-language policy requiring a consistent default language, this is a policy-style mismatch.

Content

No source excerpt is available for this finding.

Static analysis

Detected: suspicious.dangerous_exec

Shell command execution detected (child_process).

Critical
Code
suspicious.dangerous_exec
Location
scripts/openclaw-host-installer.mjs:523