Secure .gh file

:rofl: moving them together is adequate for most occasions.

1 Like

but I think there are more companies that have made complex grasshopper definitions which they want to protect from the “outside”.

These companies do things like:
1: Have employees sign NDA’s.
2: Use computers which block cloud storage and external email services.
3: Use computers which don’t allow USB and other external storage devices to work.

1 Like

I have worked in highly secured area and I know about dozens of ways to bypass point 2 and 3. Even the people who had no clue about programming found ways almost by accident. In the end it’s just point 1 in conjunction with a high fine which prevents people in not doing it. But yes, this is also what I think is the only true way of protection.

Millipede plugin override usual graphics for its components and wires, even if the solver is locked.
I never made a gh plugin but i’m starting to think it should be possible to make completely invisible components…

Reminds me on the components-jumping-away-from-the-mouse hack, somebody was doing years ago… :stuck_out_tongue: “All-10-seconds-reshuffle” or the “fortune-wheel-canvas” are also great candidates to enhance the GH experience :wink:

simple trick to cheat GH canvas renderer. (6.5 KB)


the awesome Long Nguyen? :heart_eyes:


You have written it a bit bizarre, but yes I think this is the creator of this project I was refering to.

Hi all,

Thanks for all inputs, I came up with the conclusion that if I let all inputs go through a pythongscript that controls if the file is placed on a specific place in the network and if so lets everything though.
Then I put all components in the same cluster and add password to it.

I know from the experience in this thread that it’s not bulletproof, but at least it complicates it for a non programmer.

1 Like

One more thought, and I think this one is for @DavidRutten:

If I:

  1. make a .gh file “read only” (by right clicking on the file and select properties)
  2. Open it up and save it

Why does it save the file as the same name WITHOUT “read only”, and then add a new file in same location with a strange filename? Also the new file is WITH “read only”

Hope I made my self clear in the question.
I was hoping that I I put a file to read only no one could save it in tha grasshopper UI

Thanks in advance

Grasshopper file saving is unorthodox. I have never tried to see what happens when a file is readonly, I’ll need to do that whenever I get to the office.

When saving a file, grasshopper first creates it entirely in memory. This is a two stage process, where first the entire file structure is created as a sort of runtime dictionary with strongly typed entries. In this phase any plugin which participates in the file writing is involved. Once the dictionary is complete, it is serialised to either an Xml string or a compressed byte-array using only grasshopper core code, no 3rd party code allowed.

When the bytes or the string are finished in memory, they are written to the temp folder.

Once the file exists in the temp folder on the disc, the original file is renamed, the temp file is moved and renamed so it’s now in the right place, and finally the renamed original file is deleted.

This complicated game of three card monty is to make sure that if anything goes wrong during the saving process, the original file is still there.

1 Like

Ahh… ok
thanks for the clarification David.
Then it seams like there is no need of making a file read only?
We are 8 co-workers that share the same definitions and we like to have it that way because then if I make changes to the file, everyone get the new version directly.
But they don’t have much knowledge to grasshopper and often seams to screew things up. on top of that they save the file even though I continuously remind them not to.
That’s why the read only would come very much in handy.

Thanks again for the info David

You could make a folder on a shared drive read-only or you use tools/services for versioning. You could missuse Git and GitHub for example, although it might not be the best solution for this kind of things. Using a tool like SourceTree is great to fetch local copies from an cloud stored repository, or the other way around. This way you will never run into problems of overriding anymore.


It’s actually a very good use of Git (or whatever version control system). :slight_smile:

People are doing really nasty things with git.

// Rolf


Hi -

If you are running Rhino 7, you could turn your Grasshopper definition into a “play-able” version and your coworkers wouldn’t need to start Grasshopper anymore.