allowManagedModsOnly in Claude Code: does hosted Sume MCP still load?
allowManagedModsOnly keeps users' own Claude Code mods from loading. What it leaves alone, how a policy mod reviews the rest, and the Sume MCP connection.

Mods and MCP servers are separate switches in Claude Code. allowManagedModsOnly stops every mod a user brings from loading, and Claude Code's docs say it leaves users' settings hooks, status lines, and /goal working. The overview adds that when a mod is stopped by this kind of setting, the rest of its plugin stays in place: its skills, commands, agents, and MCP servers still load. Nothing on those pages ties a Sume connection to the option, so a hosted Sume server that you or your administrators configured stays configured.
This post reads Claude Code's organization guide and mods overview, read 2026-10-03, for people who deploy Claude Code settings and also want developers to reach https://mcp.sume.com/mcp.
What does the setting look like?
It is an option on the built-in guard, cc-plugin-sec-default@builtin, and goes in managed settings under pluginConfigs. The guard reads it from managed settings only, so the same entry in a user, project, or local settings file changes nothing.
{
"pluginConfigs": {
"cc-plugin-sec-default@builtin": {
"options": {
"allowManagedModsOnly": true
}
}
}
}What does it stop and what does it keep?
The admin guide spells out what the option covers. The table compresses it and notes the one detail that matters for Sume: the stopped mod is a piece of code, and MCP servers are a separate part of a plugin.
| Thing | With allowManagedModsOnly | Note |
|---|---|---|
| A mod in a plugin the user installed | Does not load | Also covers --plugin-dir and a mod Claude writes during a session |
| A mod your organization installs the documented way | Loads | It must be enabled in managed settings and sit in a directory marketplace on the machine |
| A plugin enabled from a GitHub or other remote marketplace | Its mod does not load | Claude Code treats it as a user's mod |
Users' settings hooks, status lines, /goal | Keep working | Not affected |
Built-in mods such as AGENTS.md support | Keep running | Each has its own switch |
| A plugin's skills and MCP servers, when its mod is stopped | Still load | Per the overview, for disableAllHooks and allowManagedModsOnly |
How does a developer still connect Sume?
The connection is an ordinary MCP server, not a mod. Sume's quickstart uses claude mcp add --transport http sume https://mcp.sume.com/mcp and then claude mcp login sume; consent happens on Sume's MCP host with Read on and Write off by default. If your organization restricts which MCP servers users may add, that is a different control. The managed-settings post covers the refusal and the exclusive allow post covers a managed list that names the Sume server.
A quick check after rollout: on a test machine, start Claude Code, confirm Sume's server is connected, and call mcp_health, which reports the endpoint, the auth source and the safety posture. Then load a sample mod with --plugin-dir; the guide says its hooks should not run and the debug log should name allowManagedModsOnly. Both checks should pass at once.
Can I allow some user mods and refuse others?
Yes, with a policy mod of your own. A mod listed in prependPlugins receives a plugin.register event each time another mod is about to load, with e.tier and e.uses.calls, the same list claude plugin validate prints. Returning { refuse: 'reason' } keeps the mod from loading. This example, adapted from the guide's own policy mod, refuses a user's mod that both reads the environment and uses the network, and fails closed:
const NEEDS = ['env.get', 'http.fetch']
export function register(on) {
on('plugin.register', async ($, e, next) => {
const risky = NEEDS.every((call) => e.uses.calls.includes(call))
if (e.tier === 'user' && risky) {
return { refuse: 'Policy: a mod may not both read the environment and use the network' }
}
return next(e)
}).catch(async ($, e, next) => {
if (e.tier !== 'user') return next(e)
return { refuse: 'Policy check failed, so this mod was not loaded' }
})
}What should I still keep in mind?
A few limits apply whichever policy you choose. They come straight from the guide and apply to Sume users as much as to anyone else.
- Your policy mod must count as the organization's: enabled in managed
enabledPlugins, with its marketplace named as an absolute directory path and the plugin listed by a relative path. A plugin Claude Code copies from a GitHub, git, URL, or npm source counts as a user's. - Deny rules and managed hooks do not cover a mod's own
$.fsand$.processcalls, so refusing the mod is the control, not a deny rule on a file. - A worker crash can turn mods off. The guide says that if the thread that runs installed mods crashes three times, Claude Code unloads every mod that is not built in, yours included, until
/reload-pluginsor a new session. - For Sume credentials, prefer OAuth with Write off for read work (OAuth and API keys); see the credential post.
Sources
Related posts
More in Developers
- Claude Code mod: stop paid Sume calls after N in a session
Write a Claude Code mod that counts paid Sume MCP calls with a tool.call hook, denies call N+1, and fails closed. Code, matcher, and what it cannot cap.
- Claude Code mod hook skipped and a paid Sume call still ran
A Claude Code mod hook that throws or times out is skipped, so the call runs anyway. Add .catch to fail closed, and know what a mod still cannot guarantee.
- Claude Code mod: ask before a paid Sume call (and claude -p)
A Claude Code mod can hold a paid Sume MCP call with $.ui.ask and show max_spend_usd in the question. In claude -p nobody answers, so it refuses. Code inside.
- Claude Code token usage vs Sume spend: two meters, one session
Claude Code's token totals and Sume's generation spend are billed in different places. Log tokens with a mod, read Sume's wallet with usage_get, and compare.
Written by Sume