Cloud sessions withhold your local plugins when your settings folder is somewhere the session can write.
What's wrong with this entry?
When a cloud session runs against a folder that also holds your Claude settings, it no longer loads your local plugins, and it tells you which folder is responsible: the one it was launched in, the one it syncs, another folder it may write to, or a location it could not resolve. The plugin choice itself lives in those settings, so a session with write access there could change it, which is why the location decides the outcome. Consent already given to share plugins is re-checked against that location and reset if the store turns out to sit somewhere the session can reach.
- The plugin store location is classified as
in_launch_dir(the folder the session was launched in),in_sync_root(the folder it syncs),in_other_root(another folder it may write to),outside(beyond the session's reach), orunknownwhen the paths cannot be resolved to real locations. - The first four of those classifications, minus
outside, each produce their own wording for why plugins were withheld, withunknownused as the fallback when resolution fails. - The message offered to the user reads:
Your plugins are not used in this cloud session: the folder it syncs contains your Claude settings, where that choice is saved, so the session could change it. Sync a folder that does not hold them. - An accepted answer found to be untrusted is set back to unanswered and the caller is notified, so the question is asked again rather than silently honoured.
- An answer given just now is left alone and not reverted, so a fresh consent survives the check.
- If two answers race, the consent cache keeps the newer one rather than letting the older write overwrite it.
- A session that has opted out prints a single notice line when its worker starts, not once per plugin.
Your plugins are not used in this cloud session: the folder it syncs contains your Claude settings, where that choice is saved, so the session could change it. Sync a folder that does not hold them., in_sync_root
Strings lifted out of the shipped bundle, so the claim above can be checked against them.