.claude/skills/openclaw-ssrf-localhost-plugins/SKILL.md
Fix OpenClaw SSRF guard blocking channel plugins (BlueBubbles, etc.) from reaching localhost or private/LAN IP servers. Use when: (1) gateway.err.log shows "blocked URL fetch (bluebubbles-api) reason=Blocked hostname or private/internal/special-use IP address", (2) `openclaw health` reports BlueBubbles as "failed (unknown)", (3) after upgrading OpenClaw to 2026.3.28+ or 2026.4.x. The SSRF guard doesn't distinguish between agent-initiated web_fetch and plugin internal HTTP calls.
npx skillsauth add Dbochman/dotfiles openclaw-ssrf-localhost-pluginsInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
OpenClaw 2026.3.28 introduced SSRF protection that blocks all HTTP requests to localhost, 127.0.0.1, private IPs (10.x, 172.16-31.x, 192.168.x), and other special-use addresses. This affects channel plugin internal API calls (BlueBubbles, Home Assistant, local LLM servers, etc.) even though those URLs are admin-configured in openclaw.json, not user-controllable.
gateway.err.log shows:
[security] blocked URL fetch (bluebubbles-api) target=http://localhost:1234/api/v1/ping
reason=Blocked hostname or private/internal/special-use IP address
openclaw health reports the channel as failedAdd "allowPrivateNetwork": true to the channel config in openclaw.json:
{
"channels": {
"bluebubbles": {
"enabled": true,
"serverUrl": "http://localhost:1234",
"allowPrivateNetwork": true,
...
}
}
}
This is a per-channel setting that exempts that channel's internal HTTP client from
the SSRF guard. It does NOT affect agent-initiated web_fetch or browser tool calls.
launchctl kickstart -k gui/$(id -u)/ai.openclaw.gatewaygateway.log — should show BlueBubbles server macOS X.X and
BlueBubbles Private API enabled (successful connection)gateway.err.log — no more "blocked URL fetch" lines after restartopenclaw health — should show BlueBubbles: okallowPrivateNetwork (camelCase), validated in the channel schemadevelopment
Search the web for current information, news, facts, and answers. Use when asked questions about current events, needing to look something up, finding websites, researching topics, or when you need up-to-date information beyond your training data.
development
Summarize any URL, YouTube video, podcast, PDF, or file into concise text. Use when asked to read an article, summarize a link, get the gist of a video or podcast, extract content from a URL, or when you need to understand what a web page or document contains.
development
Play music via Spotify and control Google Home speakers. Use when asked to play music, songs, artists, playlists, podcasts, or control speakers/volume/audio.
testing
Create new OpenClaw skills, modify and improve existing skills, and measure skill performance with evals. Use when users want to create a skill from scratch, update or optimize an existing skill, run evals to test a skill, benchmark skill performance with variance analysis, or optimize a skill's description for better triggering accuracy. Also use when asked to "make a skill", "turn this into a skill", "improve this skill", or "test this skill".