State lands in the folder you choose
gstack 1.91.11.0 keeps all its state in the folder you choose
gstack now finds its state folder the same way everywhere. Set GSTACK_HOME, and telemetry, analytics, update-check snoozes, the egress ledger and hook logs all land in that folder.
One lookup order everywhere
Every script, hook and skill checks the same variables in the same order
GSTACK_STATE_ROOT→GSTACK_HOME→GSTACK_STATE_DIR→CLAUDE_PLUGIN_DATA gstack plugin only→~/.gstackBefore, about 50 scripts and hooks each had their own rule for the state folder, and the rules disagreed. Now all of them check the same variables in one order.
Existing state stays put
Upgrading leaves your existing state where it is
If you set a custom folder, older state may still sit in ~/.gstack. The state-root guide has the move recipe.
Upgrading leaves your existing files in place. With a custom folder set, older state may still sit in the home folder, and the state-root guide explains how to move it.
Privacy opt-outs never get looser
Privacy opt-outs take the strictest value across both folders
Privacy opt-outs never get looser. Telemetry, update checks and the other opt-outs take the most restrictive value from either folder. The config tool warns you when another folder still overrides your setting.
Uninstall deletes only ~/.gstack
Uninstall deletes state only at ~/.gstack
The uninstaller now deletes state only from the home .gstack folder. It refuses if that path points at the root, your home directory, the gstack checkout or the current repository. A relocated folder stays put.
A setup key opens only /connect
A pair-agent setup key now authenticates only the /connect exchange
/command /batch /fileAn unexchanged setup key worked as a bearer token on the browse daemon
/connectThe setup key is good for the exchange and nothing else
In the browse daemon, a pair-agent setup key that hadn't been exchanged yet worked as a bearer token on the command, batch and file routes. Now it only authenticates the connect exchange.
Smaller fixes
Skills fail safely and report failures plainly
A missing state resolver now stops skill bash blocks before they write to the root folder. /plan-devex-review treats an API key error as an authentication failure. Skipping a /review finding that comes with a test skips its fix too.
Reverting leaves relocated state in place
If you revert, state in a custom folder stays there
docs/state-root.mdThe state folder, its lookup order and the move recipeIf you roll back this release, state it wrote to a custom folder stays in that folder. The state-root guide in the gstack docs covers the lookup order and how to move state.



















