{"version":"2.1.269","anchor":"eval-suite-runner-concurrency-gated-by-a-token-gate-single","canonical_anchor":"eval-suite-runner-concurrency-gated-by-a-token-gate-single","heading":"Eval runner concurrency now coordinated through a token gate","tier":"internal","area":"Plugin Eval","scope":null,"heads_up":null,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.269\/e\/eval-suite-runner-concurrency-gated-by-a-token-gate-single","release_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.269","markdown":"### Eval runner concurrency now coordinated through a token gate\n\nEval workers now share a token gate that serializes login\/credential refresh and was threaded into a simplified single-run eval loop\n\n**Unclear.** The finding does not say what change in behavior, if any, this produces for someone running `claude plugin eval`.\n\n**What**\n\n- The eval case-runner (used to run evaluation test cases) was simplified from a loop that repeated a case N times with per-iteration cost and abort checks into a single-run function, and it now releases a `tokenGate` when one was acquired, only short-circuiting on an auth failure if no other reason for stopping has already been recorded.\n\n- A new token rotation gate (a mutex-like mechanism with enter\/leave\/rotate actions) was added and is used by the eval login and gateway token refresh path, so that when multiple eval workers share the same credentials, only one of them refreshes the token at a time. It includes retry backoff and a \"skip until\" cache so a failing refresh isn't retried too aggressively.\n\n**Why**\n\nThis prevents concurrent eval workers from stepping on each other while refreshing shared login credentials, and cleans up how the eval runner tracks whether it's still allowed to keep going.\n\n- Area: Plugin Eval\n- Tier: Under the hood\n- Useful: 2\/5\n- Signal: 2\/5"}