Summary
When STRIX_LLM points at a litellm_proxy/* model, Strix reports $0.0000
cost for every request, so --max-budget never triggers — while the upstream
LiteLLM proxy dashboard shows real credit/token consumption. The dollar cap is
effectively a no-op for proxied models.
This looks related to #619 (cost always $0 on OpenRouter, closed via #634) but
reproduces on v1.4.1 specifically for the litellm_proxy/ provider path,
so the earlier fix does not cover this case.
Environment
- Strix version: 1.4.1 (checksum-pinned install)
- Provider:
litellm_proxy/<model> via an internal LiteLLM proxy (AWS Bedrock backend)
- Reproduced in both the CLI and GitHub Actions (
-n headless)
- OS: Ubuntu (ubuntu-latest runner) and local Linux
Steps to reproduce
- Configure a LiteLLM proxy whose model has no entry in LiteLLM's pricing
map (typical for custom Bedrock-backed aliases).
- Run:
export STRIX_LLM='litellm_proxy/<alias>'
export LLM_API_KEY='***'
export LLM_API_BASE='https://<internal-litellm-proxy>/v1'
strix -n --target ./ --scan-mode quick \
--scope-mode diff --diff-base origin/main \
--max-budget 1 --max-turns 40
- Let it run against a few files.
Expected
- Reported cost reflects actual token usage (estimated from proxy pricing), and
--max-budget 1 stops the scan once ~$1 is spent.
Actual
- Reported cost stays $0.0000 for the whole run.
--max-budget never binds; only --max-turns actually caps the run.
- The LiteLLM proxy dashboard shows real credits consumed for the same run.
- Observed in one run: ~3.5M input tokens across 58 requests, reported cost
$0.00, while analysing three config files.
Impact
--max-budget cannot be relied on as a spend guard for any litellm_proxy
deployment — a runaway scan has no dollar ceiling. In CI this is the exact
control teams reach for to bound per-PR cost.
- Reported cost of $0 is also misleading in run.json / summaries used for
reporting.
Likely cause
Cost is derived from LiteLLM's model pricing map. For litellm_proxy/* the
proxied model name has no pricing entry, so per-request cost resolves to 0, and
the budget check compares against a running total that never grows. Related:
LiteLLM budget bypass when the model name lacks a provider/model prefix
(BerriAI/litellm#24770).
Suggested fixes
- Surface a clear warning when a model resolves to $0 pricing (so users know the
cap is inert) instead of silently reporting $0.
- Support cost estimation for
litellm_proxy via
input_cost_per_token / output_cost_per_token passthrough, or read cost
from the proxy's x-litellm-response-cost / usage headers if present.
- Alternatively, document that
--max-budget requires a model with known
pricing and recommend --max-turns (or a proxy-side max_budget on the key)
as the real cap for proxied models.
Workaround
Using --max-turns as the effective cap, and setting a hard max_budget on the
LiteLLM key at the proxy instead of relying on Strix's --max-budget.
Summary
When
STRIX_LLMpoints at alitellm_proxy/*model, Strix reports $0.0000cost for every request, so
--max-budgetnever triggers — while the upstreamLiteLLM proxy dashboard shows real credit/token consumption. The dollar cap is
effectively a no-op for proxied models.
This looks related to #619 (cost always $0 on OpenRouter, closed via #634) but
reproduces on v1.4.1 specifically for the
litellm_proxy/provider path,so the earlier fix does not cover this case.
Environment
litellm_proxy/<model>via an internal LiteLLM proxy (AWS Bedrock backend)-nheadless)Steps to reproduce
map (typical for custom Bedrock-backed aliases).
Expected
--max-budget 1stops the scan once ~$1 is spent.Actual
--max-budgetnever binds; only--max-turnsactually caps the run.$0.00, while analysing three config files.
Impact
--max-budgetcannot be relied on as a spend guard for anylitellm_proxydeployment — a runaway scan has no dollar ceiling. In CI this is the exact
control teams reach for to bound per-PR cost.
reporting.
Likely cause
Cost is derived from LiteLLM's model pricing map. For
litellm_proxy/*theproxied model name has no pricing entry, so per-request cost resolves to 0, and
the budget check compares against a running total that never grows. Related:
LiteLLM budget bypass when the model name lacks a
provider/modelprefix(BerriAI/litellm#24770).
Suggested fixes
cap is inert) instead of silently reporting $0.
litellm_proxyviainput_cost_per_token/output_cost_per_tokenpassthrough, or read costfrom the proxy's
x-litellm-response-cost/ usage headers if present.--max-budgetrequires a model with knownpricing and recommend
--max-turns(or a proxy-sidemax_budgeton the key)as the real cap for proxied models.
Workaround
Using
--max-turnsas the effective cap, and setting a hardmax_budgeton theLiteLLM key at the proxy instead of relying on Strix's
--max-budget.