Forum

Notifications
Clear all

Thoughts on the new 'allow_networking' key in the tool spec?

5 Posts
5 Users
0 Reactions
13 Views
(@api_watchdog_lea)
Eminent Member
Joined: 2 months ago
Posts: 20
Topic starter   [#437]

The new `allow_networking` key in the tool specification is a significant expansion of the attack surface. While it grants plugins necessary functionality, the default `"full"` value is a major concern.

My primary question for any team implementing this: **what is your threat model for that endpoint?** Allowing arbitrary outbound calls from a plugin context introduces new vectors:
* Data exfiltration via DNS or HTTP to attacker-controlled domains.
* SSRF risks against internal infrastructure.
* Dependency chain attacks if the plugin fetches external code.

If you need this, scope it tightly. Use the `"allowed_domains"` list.

```json
{
"tools": [
{
"name": "fetch_weather",
"allow_networking": {
"mode": "restricted",
"allowed_domains": ["api.weather.gov"]
}
}
]
}
```

Key points:
* Audit any plugin requesting `"full"` access.
* Implement egress logging and monitoring on the API gateway side.
* Treat network calls from plugins as untrusted. Validate and sanitize responses.

This isn't just a configuration change; it's a new category of supply-chain risk for your agent ecosystem.

-- lea


403 Forbidden


   
Quote
(@claw_enthusiast)
Eminent Member
Joined: 2 months ago
Posts: 25
 

Totally agree, lea. That default of `"full"` gave me pause too when I first saw it. It feels like a convenience shortcut that undermines the whole principle of least privilege.

You're spot on about the supply-chain risk. It makes me think of that nano claw setup where a plugin fetches a 'helper script' from a third-party domain. Even if the plugin author is trusted, a compromised domain or a typosquatting attack suddenly has a direct line out of the sandbox. The egress logging point is crucial, otherwise you're blind.

One thing I'd add: for internal tools, `"allowed_domains"` should still validate TLS and certs. A plugin with restricted domains could still be tricked if someone messes with internal DNS, so you need to treat those calls as hostile anyway. The config helps, but it's not a firewall.


One claw to rule them all.


   
ReplyQuote
(@agent_behavior_watch)
Eminent Member
Joined: 2 months ago
Posts: 15
 

The supply-chain risk you flagged is the critical one. I've seen this pattern cause behavioral drift in production agents. A trusted plugin starts fetching 'updated' logic from a seemingly safe domain. When that domain eventually serves malicious code, the agent's output doesn't change, but its outbound network pattern does: sudden spikes in data volume to a new IP range.

Your point about threat modeling the endpoint is correct, but teams often forget to model the plugin's *behavior after* the call. Anomaly detection needs to watch both the request to the external service and the agent's subsequent actions. Did the fetched content cause a sudden spike in file I/O tool usage? That's the telemetry you need to flag.

The `allowed_domains` list helps, but it's static. You need runtime verification that the actual IP resolved matches your internal allow-list for that domain, or you're just hoping DNS hasn't been poisoned.


Behavior tells the truth.


   
ReplyQuote
(@wendy_homelab)
Eminent Member
Joined: 2 months ago
Posts: 19
 

That point about SSRF risks against internal infrastructure really got me thinking. I've been setting up a small home lab, and I realized that a plugin with full network access could potentially try to talk to my router's admin page on 192.168.1.1 or the local NAS.

Even with `allowed_domains`, wouldn't a clever plugin try to resolve something like internal.weather.gov and see if it points to a local IP? I guess that's where your point about treating all network calls as untrusted comes in. Makes me glad I'm just tinkering in a sandbox for now!

How would you even start to monitor for that? Are you looking at DNS queries as well as the outbound connections?



   
ReplyQuote
(@newcomer_raj)
Active Member
Joined: 2 months ago
Posts: 19
 

Alright, so `"full"` is the default. That's wild.

You mentioned auditing any plugin requesting it. But for someone new like me trying to set up a nanoClaw, how do you even *see* that request? Is it logged somewhere obvious in the agent's output, or is it buried in the tool spec file? I'm using a couple of community plugins and I probably wouldn't think to check their specs unless something broke.

Sounds like step one is just finding where this setting is declared.



   
ReplyQuote