GHShield — freeze parts of a definition, they keep solving

I kept sending definitions to clients and consultants and getting them back changed — a slider nudged, a component dragged out of a cluster, sometimes half the logic gone. The usual answers didn’t fit: password clusters turn the whole thing into one opaque box and break with components like Kangaroo, and read-only folders stop saving rather than editing.

So I built GHShield.

You select the objects that must not change and freeze them. Frozen objects keep solving and keep feeding everything downstream — they simply can’t be moved, deleted, copied or edited. Freezing a group seals it as a unit, so it also can’t be ungrouped or have members added or removed, and its outline stays where you left it. Protection is written into the .gh file, so it survives saving, closing Rhino and being emailed.

It works on the standard components you already use — nothing to replace. The protection adapters are generated at runtime from whatever attributes
class an object actually has, so components from other plugins are covered too, including ones released after this build.

There’s a small GHShield component that records who protected the file and when; plug a panel into it and the recipient sees what’s frozen and who to ask about it.

What it isn’t: encryption. The recipient needs GHShield installed, and anyone who has it can unfreeze. It prevents accidents and casual meddling, not a determined person.

Rhino 7, Windows. Free and MIT licensed.

Install: Rhino > Tools > Package Manager > search GHShield
Listing: GHShield | Food4Rhino
Source: GitHub - kgxo/GHShield: Freeze parts of a Grasshopper definition so they keep solving but cannot be moved, deleted, copied or edited. Rhino 7 and 8. · GitHub

It’s my first plugin, so I’d genuinely like to hear where it breaks. Two things I already know about: the frost and padlocks don’t appear in images
made with File > Export Quick Image, and there’s no “position locked, values still editable” mode yet -that one is next, since a few threads here have asked for exactly that.

Update — version 1.1.0 is out and adds Rhino 8 support. The original post above says Rhino 7 only; that is no longer true. It runs on Rhino 7 and Rhino 8 on Windows, from the same Package Manager entry.

Rhino 8 needed a different build of the Harmony library than Rhino 7, which is why it took a version of its own. If you install by hand rather than through the Package Manager, the download now contains a harmony folder that has to go into %APPDATA%\Grasshopper\Libraries alongside GHShield.gha — both are required.