The skill switch for OpenCode V2.
$ opencode plugin add opencode-skill-management
$ opencode plugin list --builtinskill_management <version> opencode-skill-management@<version>The context tax
Every installed skill is context you keep paying for.
OpenCode injects skill names and descriptions into the model’s context. Install enough of them and the list stops being useful: stale entries crowd out the work, a skill that will not load gives you no reason why, and deleting files to “turn one off” is a change you have to remember how to undo.
See the real state
list evaluates permissions for the agent that is actually calling, not a
merged view of every agent.
Disable without deleting
One rule in the global config hides a skill and rejects loading. The skill file is never moved or edited.
Know why it is blocked
inspect quotes the rule that matched, shows per-agent differences and
explains where the id came from.
Reverse it precisely
enable deletes the one blocking rule — not a guess, and only when it can be
uniquely identified.
Four actions
A small, deliberate surface.
- list
- Every registered skill with its effective state for the caller, plus config and sidecar consistency notes. Read-only.
- inspect
- One skill in detail: conclusion, matched rule, per-agent results, id derivation. Read-only.
- disable
- Write one global
skillpermission rule.denyby default,askfor a soft disable,dryRunto preview. - enable
- Delete the one exact global rule that blocks the skill. Refuses when the rule is ambiguous or out of scope.
The carrier
One rule. Same file. No side effects.
Disabling is not a special database or a rewritten skill file. It is a single entry appended
to the global permissions array, with a same-line marker so it can be found
again. Indentation, key order, line endings and BOM are preserved.
{ "permissions": [ { "action": "skill", "resource": "windows-shell", "effect": "deny" } // skill_management ]}The same rule is what enable later removes. That is the whole state model.
OpenCode V2 · verified on 2.0.32 (Windows and Linux) and re-checked on 2.2.0 · Node 18+ · no third-party runtime dependencies.
Read the docs →