Hard to use across machines: state outside repo, absolute paths in generated launcher, per-repo config sprawl
Maintainers usually reply within 1 day
Nobody has claimed this yet.
Assessment
- Difficulty
- 5/5
- Estimated time
- Over a week
- Newbie friendliness
- 15/100
- Issue type
- Feature
- Clarity
- Needs clarification
- Activity status
- Active
- Domain
- devtools
Research direction
This is a design discussion, not a single change: state location (~/.tokeneconomizer), the generated launcher ~/.tokeneconomizer/bin/te with its hardcoded plugin-cache path, and the per-repo .claude/settings.local.json deny rules are the places it touches. Settle the intended storage layout and runtime path resolution with the maintainers before any code is written; done means an agreed design, not a patch.
Written by the indexing model from the issue text.
Description
Feedback after using TokenEconomizer 0.1.0 (Claude Code plugin, Windows) across several repositories on two PCs, with ~/.claude synced through git. I ended up uninstalling it. These are the problems that led to that.
1. Not friendly to cloud/git sync
- Learned state lives in
~/.tokeneconomizer(repos/,index.json,sessions/,locks/), outside~/.claudeand outside the repository. It cannot travel with a synced config or with the repo, so every machine relearns from scratch. - Per-repo state folders have hashed names (e.g.
my-repo-73d35aa8b6, plus.bak-<timestamp>copies), so they cannot be matched or merged across machines by a person.
2. Absolute paths baked into generated files
- The launcher written at session start,
~/.tokeneconomizer/bin/te, is a script likeexec 'C:\Users\<name>\.claude\plugins\cache\tokeneconomizer\tokeneconomizer\0.1.0\scripts\te' "$@". It hardcodes the plugin cache path including user name and plugin version, so it is only valid on one machine and breaks on every plugin update or on a different profile folder. - Please resolve the plugin location at runtime (e.g. via
CLAUDE_PLUGIN_ROOTor relative to the script) instead of writing it into a generated file.
3. Hard to see what is enabled where
- Per-repo behaviour is spread over several places:
.claude/settings.local.jsondeny rules in each repo, anextraKnownMarketplacesentry in each project's.claude/settings.json, project-scope plugin installs, and the state under~/.tokeneconomizer. - In two of my repos the tool pruning had silently added about 250 entries to
permissions.deny(Artifact, scheduled-tasks, Teams/Outlook/SharePoint connectors, Power Automate tools, ...). Nothing in the project made it obvious why those tools were missing. Support for finding out which repos are affected was limited to a command that must be run inside each repo. - With a user-level install plus project-level installs, the plugin list shows the same plugin several times, which made it hard to tell which copy applies where.
Suggestions
- Keep state inside the repo (or an opt-in, relocatable directory), in a readable, mergeable format.
- No absolute paths in generated files.
- One place that shows which repos are enabled and what has been pruned, and prune via an explicit, visible, reversible step rather than a large silent deny list.
- 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
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from microsoft/TokenEconomizer
-
trace: Pi's 1-hour cache writes are priced at 1.25x, but billed at 2xPossibly taken @Shizoqua claimed this today. Open
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
microsoft/TokenEconomizer#221 ·
Maintainers usually reply within 1 day
-
CommandCode supportOpen
Difficulty 5/5 Over a week Newbie friendliness 25/100
microsoft/TokenEconomizer#205 ·
Maintainers usually reply within 1 day
-
Copilot CLI hooks fail on Windows: command runs under PowerShell, which can't execute te-hookPossibly taken @sykuang claimed this 3 days ago. Open
Difficulty 3/5 1-2 days Newbie friendliness 72/100
microsoft/TokenEconomizer#204 ·
Maintainers usually reply within 1 day
-
Difficulty 5/5 Over a week Newbie friendliness 35/100
microsoft/TokenEconomizer#193 ·
Maintainers usually reply within 1 day
-
Difficulty 5/5 Over a week Newbie friendliness 20/100
microsoft/TokenEconomizer#186 ·
Maintainers usually reply within 1 day
All issues in microsoft/TokenEconomizer
Similar issues
-
documentation type/bug
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
Maintainers usually reply within 1 day
-
add entry to blockOpen
Difficulty 1/5 Under an hour Newbie friendliness 65/100
StevenBlack/hosts#3299 ·
-
`garak --report` overwrites the input report when its name has no ".report"Possibly taken @0z5a claimed this today. Openneeds-triage
Difficulty 2/5 Half a day Newbie friendliness 72/100
Maintainers usually reply within 2 days
-
plot_graph crashes when a mesh node has no m2m edgePossibly taken @tygvi claimed this today. Open
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
mllam/neural-lam#883 · 1 comment ·
Maintainers usually reply within 2 days
-
Difficulty 2/5 1-3 hours Newbie friendliness 74/100
microsoft/graphrag#2626 · 1 comment ·
Maintainers usually reply within 5 days