Caddy Reverse Proxy

PassAudited by VirusTotal on May 11, 2026.

Overview

Type: OpenClaw Skill Name: caddy-reverse-proxy Version: 1.0.0 This skill is classified as suspicious due to several high-risk practices and potential vulnerabilities, although without clear evidence of intentional malicious behavior. Key indicators include the explicit instruction in `reference.md` to use a 'long-lived `vcp_*` token (no expiration)' for the Vercel API, which significantly increases the impact of a token compromise. Additionally, `reference.md` details running Caddy as a macOS LaunchDaemon that 'runs as root' for port 443, a high-privilege configuration, or granting `cap_net_bind_service` via `sudo setcap` on Linux. The skill also involves creating system-level persistence mechanisms (LaunchDaemons/systemd services) and, in `OPENCLAW.md`, instructs setting `allowInsecureAuth: true` for the OpenClaw gateway, a security downgrade.

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

A local dev app could become reachable directly on its raw port, bypassing Caddy, TLS, and any proxy-level controls.

Why it was flagged

For a same-host Caddy route using localhost, binding the app to all interfaces is broader than needed and may expose the app directly on LAN, Tailscale, or public interfaces outside Caddy's HTTPS/proxy boundary.

Skill content
Designed for Tailscale-only access (no public exposure)... reverse_proxy to localhost:<port> ... **Bind to 0.0.0.0** so Caddy can proxy to it.
Recommendation

Bind apps to 127.0.0.1/localhost when Caddy runs on the same machine; use 0.0.0.0 only with a firewall or container/network design that explicitly requires it.

What this means

If the gateway is exposed more broadly than intended or a token leaks, access to the control UI may be easier than with device-key authentication.

Why it was flagged

The OpenClaw gateway integration intentionally weakens the normal device-auth boundary for proxied control UI clients. It is disclosed and purpose-aligned, but it affects a sensitive agent gateway interface.

Skill content
`allowInsecureAuth: true` — The gateway normally requires device-key authentication... This setting allows token-only authentication.
Recommendation

Use this setting only when required, keep the gateway restricted to trusted Tailscale/private clients, tightly limit allowedOrigins and trustedProxies, and revert the setting if proxying no longer needs it.

What this means

If this token is exposed, someone could potentially alter DNS records or interfere with certificate issuance for the configured domain.

Why it was flagged

A Vercel DNS token is expected for DNS-01 certificate automation, but it is a long-lived credential with DNS-account impact and should be treated as sensitive.

Skill content
**Vercel API Token:** Create a long-lived `vcp_*` token... no expiration — must be revoked if exposed.
Recommendation

Use the least-privileged token available, store it in a file with restrictive permissions, avoid pasting it into shell history, and revoke/rotate it if exposed.

What this means

A future plugin change or compromised dependency could affect the Caddy binary users build and run.

Why it was flagged

The guide asks users to build a custom Caddy binary from an external GitHub plugin without pinning a commit or version. This is normal for custom Caddy builds but has provenance and repeatability risk.

Skill content
xcaddy build --with github.com/caddy-dns/vercel
Recommendation

Pin plugin versions or commits, review the plugin source, and build from trusted repositories.

NoteHigh Confidence
ASI10: Rogue Agents
What this means

Caddy and app services may continue running in the background until explicitly disabled.

Why it was flagged

The documentation creates long-running services that start automatically and may survive logout. This persistence is expected for a reverse proxy, but users should understand it.

Skill content
RunAtLoad ... KeepAlive ... Restart=always ... systemctl --user enable --now caddy ... loginctl enable-linger $(whoami)
Recommendation

Only enable persistent services you want running continuously, and document how to stop, disable, or remove them.