Hemlane MCP

AdvisoryAudited by Static analysis on May 1, 2026.

Overview

No suspicious patterns detected.

Findings (0)

Artifact-based informational review of SKILL.md, metadata, install specs, static scan signals, and capability signals. ClawScan does not execute the skill or run runtime probes.

What this means

If used with an authenticated Brave session, the agent can obtain reusable Hemlane session headers that may allow reading or acting in the user's Hemlane account.

Why it was flagged

The MCP tool exposes live browser-session auth capture and lets the caller choose an output file for captured headers. This is high-impact credential/session access and is not reflected by the registry metadata's lack of declared credentials.

Skill content
@mcp.tool()
def capture_auth(endpoint_kind: str = "get-properties", out_file: str = None) -> dict:
    """Capture Hemlane auth headers from browser CDP session.""" ... args.extend(["--out-file", out_file])
Recommendation

Declare the credential/session requirement, require explicit user approval before capture, restrict and protect the output path, and delete captured auth files after use.

What this means

In a shared OpenClaw/Discord deployment, Hemlane write authority may depend on a preselected identity rather than the installing user's explicit control.

Why it was flagged

Write authorization is tied to one hard-coded Discord sender hash instead of a local, installer-controlled allowlist or per-action approval mechanism.

Skill content
AUTHORIZED_DISCORD_SENDER_SHA256 = "d40800cb299a0988be92536d6ac5a7e99659ec6d9fef7b7779a8fdeb980f8da1" ... if caller and __import__("hashlib").sha256(caller.encode()).hexdigest() == AUTHORIZED_DISCORD_SENDER_SHA256:
Recommendation

Replace the hard-coded identity with local configuration controlled by the installer, and require per-action approval for Hemlane mutations.

What this means

An authorized invocation could immediately send messages or post comments in Hemlane using ambient runtime credentials, potentially affecting tenants, owners, or maintenance records.

Why it was flagged

The tool performs an external account mutation by posting tenant messages; the advertised auth_file parameter is not passed to the script, so credential scoping is unclear. Similar write tools exist for referrals and work-order/maintenance comments.

Skill content
def send_tenant_reply(tenant_group_id: str, message: str, auth_file: str) -> dict: ... return run_script("send_hemlane_tenant_reply.py", ["--tenant-group-id", tenant_group_id, "--body", message])
Recommendation

Make write tools dry-run by default, pass and validate the selected auth file, show the target account/record/content before sending, and require explicit confirmation for every mutation.

What this means

Sensitive tenant and payment-status information could be exposed to users of the skill or accidentally reused in future generated messages.

Why it was flagged

The skill persists HAR-derived tenant/payment details in reference material that agents may read and reuse across tasks.

Skill content
"body": "Good morning Tiffany, as discussed, it seems your $890 December payment bounced and was reversed by Hemlane. You may see a new request for it to be reprocessed in your Financials tab. Thanks!"
Recommendation

Sanitize reference files by replacing real names, IDs, emails, phone numbers, and payment details with synthetic examples before publishing or sharing the skill.

What this means

Installing and enabling the MCP server means the agent can run the skill's bundled Python scripts for Hemlane operations.

Why it was flagged

The MCP server runs local Python helper scripts. This is central to the stated purpose, but users should understand that enabling the server permits local code execution for these workflows.

Skill content
cmd = ["python3", str(script_path)] + (args or [])
result = subprocess.run(cmd, capture_output=True, text=True, timeout=60)
Recommendation

Review the bundled scripts, run them in a limited user environment, and avoid granting broader shell access than needed.

What this means

A user may not realize from registry metadata that enabling the skill involves running a local Python MCP server.

Why it was flagged

The skill documents an MCP server setup even though the registry says there is no install spec. The behavior is disclosed, but dependency/setup requirements are under-declared.

Skill content
"mcpServers": { "hemlane": { "command": "python3", "args": ["/home/umbrel/.openclaw/workspace/skills/hemlane/mcp/server.py"], "transport": "stdio" } }
Recommendation

Declare the MCP server, Python dependency, and any required package dependencies in metadata or install documentation.