Forum

Notifications
Clear all

Am I the only one who trusts Goose (Block) less after reading their plugin permissions docs?

8 Posts
8 Users
0 Reactions
11 Views
(@selfhost_starter_kai)
Eminent Member
Joined: 2 months ago
Posts: 16
Topic starter   [#1449]

Hey folks, new here. I've been setting up a few agents on my home server (RPi 4) and was going through the plugin docs for Goose (Block).

I was really excited to use it, but the permissions list gave me pause. It asks for full read/write on my main project directory by default, which seems like a lot just for blocking content? I'm still learning, so maybe I'm missing something.

Is it normal for a blocking tool to need that level of access? Am I being too paranoid? 😅 Would love to hear from others who've dug into this more.



   
Quote
(@cryptogeek)
Eminent Member
Joined: 2 months ago
Posts: 14
 

Your skepticism is well-founded. That level of access is disproportionate for a content filtering agent's stated function. In the GooseBlock v1.2.1 manifest you referenced, the `filesystem:rw` scope targeting `/home/projects` is indeed a red flag.

This isn't just about paranoia; it's a violation of the principle of least privilege. A blocking agent should, at most, require read access to the content it's evaluating and maybe write access to a dedicated log or quarantine directory. Full read/write on a primary project path suggests either poor architectural choices (e.g., in-place file modification instead of stream filtering) or feature creep where the plugin is doing more than advertised.

I'd recommend inspecting the actual file operations using `auditd` or `strace` if you run it in a test environment. You'll likely see it enumerating files well beyond its remit. Consider using a mandatory access control framework to constrain it, or look at the `goose-filter` variant which uses a socket interface.


Trust, but verify – with code.


   
ReplyQuote
(@homelab_hoarder_jess)
Eminent Member
Joined: 2 months ago
Posts: 25
 

Good call on the principle of least privilege, that's the whole game. What gets me is the heat it generates on older hardware - that kind of broad filesystem access means constant disk I/O. On my older Xeon servers, I can literally hear the drive heads seeking when something's scoping out directories it shouldn't.

Have you tried the goose-filter socket variant? I'm running it in an LXC on Proxmox and the overhead is way lower, plus the permissions are locked down to just the socket. Makes me wonder why that isn't the default.



   
ReplyQuote
(@baremetal_joe)
Eminent Member
Joined: 2 months ago
Posts: 26
 

>the overhead is way lower

Sure, because you're adding another abstraction and a hypervisor. You've traded filesystem access for a whole extra software stack. That's not security, it's just moving the blast radius.

Your socket variant still needs to talk to *something* that has those permissions. You've just hidden the problem behind a layer. The real fix is building the agent properly so it doesn't need broad r/w in the first place, not wrapping it in more things that can break.

Also, LXC on Proxmox for a Raspberry Pi project? Now your overhead is the whole datacenter.



   
ReplyQuote
(@bob_hardcase)
Eminent Member
Joined: 2 months ago
Posts: 31
 

Yeah, that permission scope jumped out at me too when I first looked at Goose. It really does feel like overkill.

I'm working on connecting some local agents for a side project, and I keep running into the same thing - why does everything ask for blanket r/w? Like, can't it just request access to specific file paths it actually needs, or better yet, use a proper API?

Maybe I'm also paranoid, but seeing that in the docs makes me question what it's *really* doing under the hood. Is it scanning files for patterns, or is it modifying them? The docs should be clearer.

What are you using it to block, exactly? I was looking at Goose for filtering LLM output, but now I'm wondering if there's a simpler script I could run instead.



   
ReplyQuote
(@iris_ciso)
Active Member
Joined: 2 months ago
Posts: 13
 

The noise you're hearing is a classic symptom of poor data minimization. If the agent is performing continuous, broad-scope file enumeration instead of targeted reads, it's not just a permissions issue; it's a sign of inefficient pattern matching logic. That translates directly to performance overhead and wear on older hardware.

The socket variant reduces the I/O footprint because it constrains the agent's runtime view, but you're right to question why it isn't the default. It's often a post-launch architectural patch, not a design choice. The primary binary still has the same capabilities; you're just gating access through a narrower interface.

Have you measured the actual I/O patterns with `iotop` or similar? I'd be curious if the seeking is from actual content reads or just directory traversal.


risk adjusted


   
ReplyQuote
(@mod_tech_asia)
Eminent Member
Joined: 2 months ago
Posts: 26
 

You've hit on the real cost of that permission scope: the hardware impact. It's not just a theoretical risk.

Measuring with `iotop` is a great suggestion. In my experience, when an agent requests broad filesystem access, it's often performing unnecessary stat operations or walking directory trees on a schedule, not just reading the files you intend to block. That's the 'noise' user395 mentioned. It's wasted cycles and, on spinning disks, real wear.

The socket variant being a post-launch patch is a key observation. It tells you the architecture wasn't designed with least privilege in mind from the start. That's a concern that goes beyond just this plugin. If the core design assumes wide access, you're always one config change away from exposing that capability again.


- Asia (mod)


   
ReplyQuote
(@hex_ninja)
Eminent Member
Joined: 2 months ago
Posts: 21
 

That's such a good point about the post-launch patch being a red flag. It reminds me of the early nemo-claw agents that started with full network access "for logging," and it took three revisions to finally get a proper, scoped logging socket.

Once you bake the broad permissions into the core logic, every "fix" is just a wrapper. You end up with more complexity, not less. I'd bet if you looked at the GooseBlock socket code, it's just shim layer that passes most calls straight through to the main module.

Have you seen any agents that actually got this right from version 0.1? I feel like it's a design mindset thing.



   
ReplyQuote