Claude Code side calls: use --safe-mode so the judge and proposer don't load the user's customizations

Open
#162 0 comments 0 reactions 0 assignees View on GitHub

Maintainers usually reply within 1 day

@dhruv1220 is already working on this.

Since Nov 7, 2026.

  • #163 by @dhruv1220 — open

Assessment

Difficulty
2/5
Estimated time
1-3 hours
Newbie friendliness
25/100
Issue type
Feature
Clarity
Clearly specified
Activity status
Stale
Tech stack
python

Research direction

Read sidecall.claude_call and the existing claude_flags() detection for --no-session-persistence. Add the conditional --safe-mode flag to side-call invocations, keeping the measure and refresh-catalog probes unchanged. Check the side-call tests and verify behavior with and without the flag in claude --help; done when only supported Claude Code versions receive the flag and both probes still load customizations.

Written by the indexing model from the issue text.

Description

Context

Since #89, sidecall.claude_call runs claude -p --output-format json --max-turns 1 --tools "" --model haiku
with --strict-mcp-config and an empty MCP config, which removed the MCP cost. The call still loads everything
else from the user's setup: CLAUDE.md files, installed plugins and their SessionStart / UserPromptSubmit
hooks, skills, output styles.

On a setup with a shared team config (rtk, caveman, ponytail, a few plugins, a UserPromptSubmit classifier
hook), te toolprune measure reports a lean prompt of ~26k tokens for an empty Claude Code session (Claude Code
2.1.319, Linux). Each judge or proposer call pays that context, and the user's hooks run inside it: a
SessionStart hook that starts background updates, or plugins that inject style instructions into the reply,
can change both the cost and the shape of the JSON answer the plugin parses.

Proposal

Add --safe-mode to the Claude Code side-call flags when claude --help lists it, the same way
claude_flags() already detects --no-session-persistence. claude --help describes it as "Start with all
customizations (CLAUDE.md, skills, installed plugins, hooks, MCP servers, custom commands and agents, output
styles, workflows, …) disabled". TE_SIDECALL=1 would still be useful for older Claude Code versions without the
flag.

The measure and refresh-catalog probes should keep loading the user's setup: they measure the real session.

Environment

TokenEconomizer 0aa2aca, Claude Code 2.1.319, Linux, Python 3.14.

Dominant language
Python
Stars
5.6k
Forks
344
Avg merge
17h 41m
Merged PRs (30d)
73

Getting set up

This project ships no dev container, Dockerfile or contributing guide, so setting up is up to you: start from its README, and see our first-contribution guide for the general steps.

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from microsoft/TokenEconomizer

All issues in microsoft/TokenEconomizer

Similar issues

More Python issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.