Keeps a shared list of items your Group Ironman group has agreed belong in group storage, and warns you when you try to log out still holding one.
Any member can mark or unmark an item. The list is shared through a private GitHub repository that the group owns, so everyone sees the same list.
- Shift + right-click any item in your inventory, bank, worn equipment, or the group storage chest → Mark for storage.
- A sidebar panel lists everything the group has marked, colour-coded by whether you are holding it, with an optional per-item note the whole group sees ("for ToB only").
- Marked items are highlighted wherever they appear — bank, inventory, worn equipment. Box, filled box, underline, or tint, in a colour you choose.
- The list is mirrored into a bank tag, so searching your bank for
tag:gimfilters it to exactly the items that need to go back. - Opening the group storage chest shows a deposit checklist that ticks items off as you put them in.
- Clicking Logout or the world switcher while still holding a marked item shows a banner naming the items, a chat message, and a notification. The banner appears only at that moment — it is not a permanent HUD element.
Every setting is personal and local to your client. The only shared thing is the marked list itself.
The plugin works without any setup, but the list stays local to your client until you turn on group sync.
One member does this once: open the Group Enforcer sidebar and click Set up group sync. The plugin walks you through creating a private GitHub repo and a fine-grained access token — both in your browser, so the plugin never sees your GitHub login — then verifies them, creates the list file for you, and shows the group key to send to the others.
Everyone else clicks Paste key in the sidebar and pastes what they were sent. That is the whole setup for them.
Prefer doing it by hand? Create a private repo containing a list.json with {"schema":1,"items":[]},
create a fine-grained token scoped to only that repo with Contents: Read and write, and fill in the
fields under Group sync in the plugin settings. Either way, the sidebar's Test button checks the
configured details against GitHub and reports exactly what is wrong if sync ever stops working.
The group key contains the access token. It is encoded, not encrypted — anyone holding it can recover the token and write to the list repo. Share it only with your group. If it leaks, revoke the token on GitHub and issue a new key. Fine-grained tokens also expire, at which point sync stops until someone generates a new one and re-shares the key.
Group sync is disabled by default. With it off, the plugin makes no network requests at all.
When you enable it, the plugin talks to api.github.com only — no other host, and no server operated
by the plugin author. Specifically it:
- reads and writes one file in the private repo you configured, via the GitHub Contents API
- sends your configured access token in the
Authorizationheader - writes into that file: the marked items (item ID, quantity, item name), the RSN of whoever last changed the list, and a timestamp
Nothing else about your account is transmitted. There is no telemetry, no analytics, and no third-party service. Enabling sync does expose your IP address to GitHub, as the settings warning states.
On disk, the plugin writes a cached copy of the list to .runelite/groupenforcer/list.json and nothing
outside that directory. The access token is stored in your RuneLite config as a secret config item.
| Section | Contains |
|---|---|
| Logout warning | Master toggle, world-hop toggle, clicks-to-confirm, banner and its duration, chat message, desktop notification |
| What counts | Independent toggles for inventory, worn equipment, and personal bank |
| Highlighting | Master toggle, style, colour, and per-panel toggles for bank, inventory, equipment |
| Helpers | Deposit checklist, bank tag on/off and its name |
| Group sync | Enable, group key, repo fields, access token, poll interval |
Turning off a location under What counts means it is not read at all, not merely unreported.
It never prevents you from logging out. The optional Clicks to confirm setting (default 0, i.e.
off) intercepts up to five logout clicks and asks you to click again, in the same spirit as the
anti-oops plugin's confirmation for accidental teleports. It cannot stop you leaving: the count is
bounded, resets as soon as you are holding nothing marked, and at the default nothing is intercepted at
all.
It never withdraws or deposits anything for you. There is no automation of bank or storage actions. The highlight, bank tag, and deposit checklist exist to make the manual action fast, not to perform it.
It does not read group storage to judge compliance. The group storage container is a temporary client-side copy: the game only populates it while the chest interface is open, only one member can hold it at a time, and another member's save changes it with no notification to your client. So the check is "is this item on me?" — inventory, equipment, and personal bank — which is always readable. Group storage contents are shown in the panel for reference only, labelled with how long ago they were seen.
Your personal bank can only be read after you have opened it once in a session. Until then the panel says so rather than implying you are clear.
Account type. The held-item check and logout warnings only engage on Group Ironman accounts (including Hardcore and Unranked GIM). The item highlight and bank tag are passive views of your marked list and appear on any account.
Requires JDK 11 or newer.
./gradlew build
See DEVELOPING.md for running a development client and other contributor notes.
BSD 2-Clause. See LICENSE.