Draft — this page is not indexed and the mod is not yet published.
effortless Claude Code mod: set Claude Code reasoning effort automatically
Picks the reasoning effort for every prompt and shows it above the prompt with a prompt-cache countdown.
Permissions
- Reads filesCan read files and list directories on your machine ($.fs.read / list / stat / exists).
- Writes filesCan create or overwrite files on your machine ($.fs.write).
- Runs commandsCan run shell programs on your machine ($.process.run / spawn). Check the source for exactly which ones.
- NetworkCan make HTTP requests or talk to MCP servers ($.http.fetch / $.mcp.*).
- Calls the model (uses your quota)Can send its own requests to Claude, which count against your plan's usage ($.model.* / $.agent.spawn).
- Intercepts tool callsSees every tool call Claude makes (tool.call / tool.check) and could block or change it.
- Reads your promptsCan see what you type and the conversation transcript (prompt.* / session.append / session.messages).
- Changes the UIDraws into the Claude Code interface: bands, panes, status text, toasts (ui.render / $.ui.*).
- Adds commands/toolsRegisters new slash commands or tools that you or Claude can invoke ($.command.register / $.tool.register).
- Stores dataKeeps data between sessions in the plugin's private store ($.store.*).
- tested with
- v2.1.303
- last tested
- requires
- Claude Code ≥ 2.1.287
- surfaces
- above-prompt, pane, toast
- source
- HeyCubit (MIT)
Install inside Claude Code:
/plugin install effortless --marketplace HeyCubit/effortlessWhat does this mod do?
effortless is a community mod by HeyCubit (HeyCubit/effortless). It sets the Claude Code reasoning effort for every prompt you send. Before the request goes out, a small judge reads your message and the recent conversation and picks an effort from low to max, so quick questions run at Low and hard jobs at High. You do not touch the Effort control. Short follow-ups such as "go" or "yes" keep the effort already chosen, and a message that names a level ("max effort") runs at it with no judge.
Above the prompt it draws a band. According to the author's README, the band shows the effort and model in use, how full the context is, a countdown until the prompt cache goes cold, an Auto switch, a settings gear, and a Compact button. When Haiku judges that a fresh chat would pay off, Compact becomes a Handoff button that writes a summary, clears the chat and carries on. Further down it can warn about a swamped context, running-low plan limits and a cold cache, and it adds an agent panel for subagents.
The mod is large: one 5,400-line module plus a bundled second plugin (textless) in the same repository, which we did not onboard. The author's README claims 21% lower cost than Opus on medium in its own benchmark; we did not reproduce that.
Demo
There is no recording yet. The mod needs its own setup guide, a judge call before every prompt and a few turns before the band has anything to show, and the author's test suite fails 52 of 274 tests on Claude Code 2.1.303, including its update tests (see below). We kept this page as a draft rather than record a mod we could not verify end to end.
Install
The install block above adds the author's marketplace (HeyCubit/effortless, which lists effortless and textless) and installs the plugin from it. We tested commit df5602e on the default branch; the marketplace entry itself points at the author's stable branch, which may be a different commit. Run /reload-plugins or restart Claude Code. A short setup guide opens above the prompt the first time: keep Haiku alone or add Jev, lean cheaper or smarter, and choose how handoffs are written. /effortless setup opens it again.
$ install effortless
Requires Claude Code ≥ 2.1.287
Installs from the author's own marketplace: HeyCubit/effortless
1.One line, inside Claude Code
/plugin install effortless --marketplace HeyCubit/effortlessPaste into a running session (v2.1.275+). Claude Code asks to add the marketplace first.
2.From your shell
claude plugin marketplace add HeyCubit/effortless claude plugin install effortless@effortlessThen run /reload-plugins in any session that is already open.
3.Try it without installing
git clone https://github.com/HeyCubit/effortless claude --plugin-dir ./effortlessLoads the mod for one session only. Nothing is added to your settings.
How it works
The plugin is one function-hooks module, hooks/register.tsx. On prompt.submit it asks the judge for a verdict, and on turn.step it rewrites the outgoing request's effort. Compaction is also taken over by a session.compact hook:
on('session.compact', async ($, e, next) => {
// A subagent's own compaction, the session's model by choice: Claude Code's own.
if (e.agentId !== undefined || config.compactWith !== 'haiku') return next(e)
// Ahead-of-time summaries would be written by the chat's model and then not used: none.
if (e.trigger === 'precompute') return { skip: 'effortless compacts with Haiku when it is time' }
const messages = Array.isArray(e.messages) && e.messages.length ? e.messages : await $.session.messages().catch(() => [])
const got = await haikuCompaction($, messages, e.instructions).catch((error: unknown) => ({ fail: String(error).slice(0, 80) }))
...The judge calls $.model.complete with Haiku 5.5, falling back to the haiku alias, with a 6 second timeout. With a TypeSafe key it asks Jev first over HTTP and falls back to Haiku when Jev is unsure, slow or down. The cache countdown comes from the cache lifetime in each response's usage, and Compact appears once it reaches zero.
Customize it
The plugin declares 16 options (/plugin configure effortless@effortless or the gear in the band): the judge (auto, haiku, jev), an effort slider from -2 to 2, a floor and ceiling for Auto, which alerts to hide, the handoff skill and first choice, "Compact with" (haiku or session), "Cheaper model when it can" (off by default), "Effort for helpers" (off by default), a swamp threshold, and appearance, theme and layout (default band or minimal footer buttons). The /effortless command also takes auto, stats, handoff, settings, setup and debug.
Permissions & safety
We read the manifest, hooks/hooks.json, commands/effortless.md and the parts of hooks/register.tsx that touch the network, processes, files, environment variables, the model and prompts. Of the other modules (agents.tsx, progress.tsx, theme.ts, art.ts, brand-mark.ts, about 100 KB) we only searched for calls and encoded or hidden code; we did not read them line by line, and we did not read the textless plugin or the site, bench and tools folders, which the plugin does not load. There is no package.json, no bundled or minified code, and no binary. Findings:
- Network (
$.http.fetch):https://api.typesafe.ai/v1/systemone(or theJEV_URLenvironment variable) only when a TypeSafe key is found; it receives the next message (up to 4,000 characters), the recent conversation and the current model and effort, with the key as a Bearer token (register.tsx:724). The release check readsapi.github.com/repos/HeyCubit/effortless/contents/public.json(register.tsx:2685). - Processes (
$.process.run):gitfor the release check, creating a small repo under the Claude data folder (.../data/effortless-release-check) and running a depth-1 fetch fromgithub.com/HeyCubit/effortless(register.tsx:2668-2678), with no prompt;claude plugin marketplace update effortlesswhen git fails (:2694); on Update,claude plugin marketplace updateandclaude plugin update, thencp -Rof the new version over the running plugin cache folder (:2840-2891); on Uninstall,claude plugin uninstallafter two presses (:2529). All are argv arrays, not shell strings. - File writes (
$.fs.write): a key pasted in the setup guide or Judge card is saved in plain text to~/.config/jev/.env(:1893-1917); the README discloses this and points to/plugin configure, which uses Claude Code's secret storage. A debug log~/.claude/effortless-render-<chat>.logis rewritten every second with draw timings (:2262-2272)./effortless benchwrites two report files in the current directory (:4024). A proof log is written only ifEFFORTLESS_LOGis set or the mod runs from adev-modsfolder. It writes nothing tosettings.json, shell files, LaunchAgents, cron or git hooks. Settings go through$.config.setand its own store. - Reads:
~/.claude/effortless-preview.json(a preview aid),~/.config/jev/.env(only if the jev judge is picked outright, or after you saved a key there), and the plugin's ownplugin.json. - Daemons: none. It uses
$.clock.everytimers that stop with the session. - Environment:
EFFORTLESS_LOG,EFFORTLESS_MODEL_UI,HOME,JEV_URL,TEMP,TMPDIR,TYPESAFE_API_KEY,USERPROFILE. The key leaves the machine only to the Jev endpoint. - Telemetry: none found. The release check sends no data beyond a normal git or HTTPS request to GitHub.
- Model influence: it rewrites each request's effort, and with "Cheaper model when it can" on (default off) it may send a prompt to a cheaper model. On
session.compactit replaces Claude Code's summary with one written by Haiku 5.5 (default on): your transcript goes to Haiku through your own login, and the summary is injected as the first message with a fixed "continue the conversation" text (register.tsx:3800). The handoff submits its own prompts and runs/clear. We found no hidden or zero-width text and no instructions aimed at the model beyond these prompts.commands/effortless.mdis only used when the mod did not load. - Gating hooks:
session.compact,prompt.submit,agent.spawn,tool.call,command.runand others have no.catch, asvalidatenotes.tool.callonly observes.session.compact,classic.SessionStartandclassic.PostModelSwitchdo not run for a plugin you install where an organization manages Claude Code. - External requirements: none required. The
claudeCLI is needed for Update and Uninstall; a TypeSafe account only for Jev. - License: MIT,
LICENSEfile present.
claude plugin validate reported 1 error and 1 warning: effortless.updateCheck is not declared: the manifest's types contract must name it (the update button's state is missing from types/index.d.ts), and no author in plugin.json. claude plugin test ran 274 tests across 15 files: 222 passed and 52 failed. Many failing test names look like textless features (scenes, cards, chess), but the failures also include effortless's update tests (Update, Uninstall, the .local/bin fallback, the HTTPS rewrite) and the key-from-~/.config/jev/.env test, whose expected Windows-style path was joined to the working directory on macOS. We did not investigate each one. Because of the validate error and these failures, we have not marked the page live.
- Reads files
- Can read files and list directories on your machine ($.fs.read / list / stat / exists).
- Writes files
- Can create or overwrite files on your machine ($.fs.write).
- Runs commands
- Can run shell programs on your machine ($.process.run / spawn). Check the source for exactly which ones.
- Network
- Can make HTTP requests or talk to MCP servers ($.http.fetch / $.mcp.*).
- Calls the model (uses your quota)
- Can send its own requests to Claude, which count against your plan's usage ($.model.* / $.agent.spawn).
- Intercepts tool calls
- Sees every tool call Claude makes (tool.call / tool.check) and could block or change it.
- Reads your prompts
- Can see what you type and the conversation transcript (prompt.* / session.append / session.messages).
- Changes the UI
- Draws into the Claude Code interface: bands, panes, status text, toasts (ui.render / $.ui.*).
- Adds commands/tools
- Registers new slash commands or tools that you or Claude can invoke ($.command.register / $.tool.register).
- Stores data
- Keeps data between sessions in the plugin's private store ($.store.*).
Compatibility & troubleshooting
Checked with Claude Code 2.1.303 on macOS (validate and tests only; the mod was not loaded in a recording). The mod needs function hooks and is written for the current Claude 5 models: Auto changes the effort only on Opus 5.5 and Sonnet 5.5, and pauses on other models. If the band does not show up:
- Run
/reload-pluginsor restart Claude Code, then/effortless debugfor a status line. - Set Look to
default;minimaldraws only small footer buttons. - If Update fails, run
claude plugin update effortless@effortlessyourself. - If a key does not seem to work, check the judge setting, which is
autoby default and ignores~/.config/jev/.envunless you pickjev.
FAQ
- Does effortless need an API key?
- No. The default judge is Haiku 5.5, which runs on your own Claude login through the session. A TypeSafe key is only used if you add the optional Jev judge, and then the prompt text and recent conversation are sent to api.typesafe.ai.
- Does it change my Claude Code effort setting?
- The code says it rewrites the request that goes out, not the app's setting. If you change the effort yourself in the app, the mod notices at the next request, turns Auto off and shows a toast.
- Who writes my compaction summaries?
- By default Haiku 5.5 writes them, for /compact and the automatic compaction. If Haiku fails, Claude Code compacts as usual. Set "Compact with" to session to keep the chat's own model.
- Does it contact anything while idle?
- Yes. It checks GitHub for a new release on a timer, using git against github.com/HeyCubit/effortless, and falls back to the GitHub API and to claude plugin marketplace update. It installs a new version only when you press Update.
- How is it different from Cache Clock?
- Cache Clock is a single countdown for the prompt cache. effortless adds automatic effort per prompt, Compact and Handoff buttons, a swamped-context alert, update cards and an agent panel on top of its own cache countdown.
# Related mods
FeaturedCache Clock
A prompt-cache line under your Claude Code status line: time left while warm, hit rate, and tokens re-cached once cold.
- status
- Reads files
- Writes files
- Runs commands
- Adds commands/tools
tested with v2.1.296
FeaturedContext Meter
Context-window fill, 5-hour and 7-day plan usage and session cost in the status line, plus a warning near the limit.
- status
- toast
- Changes the UI
tested with v2.1.310
FeaturedCompact Adviser
Suggests running /compact when your Claude Code session reaches a finished checkpoint, judged by TypeSafe's Jev model.
- status
- pane
- toast
- Reads files
- Writes files
- Network
- Reads your prompts
- Changes the UI
- Adds commands/tools
- Stores data
tested with v2.1.291
More in Context, quota, cost, Timers, todos, standups.