Src

ReviewAudited by ClawScan on May 10, 2026.

Overview

This skill transparently creates SSH wrappers for Mac tools, but it needs review because the generated shell wrappers use high-trust SSH access and do not safely escape all configured host/path values.

Install only if you intentionally want a Linux gateway to call tools on trusted Mac nodes. Use dedicated non-root SSH keys, pin host identity where possible, create narrow wrappers, inspect the generated wrapper files, and avoid untrusted host or path values until the shell-escaping issue is fixed.

Findings (5)

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 an agent or user installs a wrapper with untrusted or malformed host/path values, the resulting wrapper could run unintended local commands under the gateway user's account.

Why it was flagged

The unquoted heredoc expands HOST, REMOTE_BIN, and ssh_opts into a generated bash script without emitting them as safely shell-escaped literals. Crafted or malformed setup values containing quotes or shell metacharacters could change what the wrapper runs when invoked.

Skill content
cat > "$wrapper" <<EOF
#!/usr/bin/env bash
set -euo pipefail
remote_cmd=\$(printf '%q ' "$REMOTE_BIN" "\$@")
exec ssh ${ssh_opts[*]:-} -T "$HOST" "bash -lc \$remote_cmd"
EOF
Recommendation

Generate wrapper contents using safe serialization, such as printf %q for configured literals or a quoted heredoc with variables assigned safely. Validate HOST and path characters, and only use trusted setup values.

What this means

A wrapper for a broad tool such as brew, gh, imsg, or things could read or modify remote Mac or account state if invoked with mutating arguments.

Why it was flagged

The generated wrapper intentionally forwards arbitrary caller arguments to the configured remote macOS binary over SSH. This is purpose-aligned, but it gives any caller of the wrapper the full capability of that remote CLI.

Skill content
remote_cmd=\$(printf '%q ' "$REMOTE_BIN" "\$@")
exec ssh ${ssh_opts[*]:-} -T "$HOST" "bash -lc \$remote_cmd"
Recommendation

Prefer narrow wrappers for specific tools or actions, use non-root remote accounts, and require explicit user confirmation before using wrappers for destructive, publishing, account-changing, or package-changing operations.

What this means

If the gateway account or wrapper is misused, it may act with the privileges of the configured SSH account on the Mac.

Why it was flagged

The skill depends on passwordless SSH credentials to a Mac node. The artifacts disclose this and recommend scoping mitigations, but the credential boundary is high-trust.

Skill content
- Linux gateway can SSH to the target Mac node without a password
- Use a dedicated SSH key for gateway-to-node wrappers whenever possible
- Use non-root accounts on the Mac nodes
Recommendation

Use a dedicated SSH key, restrict it to a non-root Mac account, pin host identity where possible, and revoke the key when the bridge is no longer needed.

What this means

Personal or business data returned by remote Mac tools may become visible on the Linux gateway and to agents that can read command output.

Why it was flagged

The skill explicitly creates a cross-host gateway-to-Mac execution/data path. This is expected for the bridge, but sensitive outputs from tools like imsg, memo, reminders, or Things can cross that boundary.

Skill content
each Mac node is a separately trusted execution surface
cross-host access must be narrow, explicit, and reversible
Recommendation

Only bridge trusted Macs, limit wrappers to needed tools, avoid broad data-dump commands, and document where command output is logged or stored.

What this means

The SSH bridge remains available for future user or agent commands until the wrapper file is removed.

Why it was flagged

The setup script intentionally installs a persistent executable wrapper in the selected bin directory. No hidden background process is shown, but the wrapper remains callable after setup.

Skill content
mkdir -p "$TARGET_DIR"
wrapper="$TARGET_DIR/$safe_name"
...
chmod 755 "$wrapper"
echo "Installed wrapper: $wrapper"
Recommendation

Track installed wrappers, remove wrappers that are no longer needed, and keep wrapper names explicit so users know which Mac and tool they target.