{"version":"2.1.319","anchor":"self-hosted-runner-token-refresh-refusal-tracking-and-child","canonical_anchor":"self-hosted-runner-token-refresh-refusal-tracking-and-child","heading":"Self-hosted runner logs now count refused token refreshes","tier":"notice","area":"Self-Hosted Runner","scope":"org","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.319\/e\/self-hosted-runner-token-refresh-refusal-tracking-and-child","release_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.319","markdown":"### Self-hosted runner logs now count refused token refreshes\n\nWhen the server refuses to refresh a self-hosted runner's token, the log now says how many refusals there have been since the last success\n\n**What**\n\nA self-hosted runner is a machine you run yourself to carry out Claude Code work. Such a runner regularly asks the server for a fresh token, a short-lived credential it needs to keep talking to the model. When the server clearly refuses, the runner now counts the refusal and logs \"The server refused it, refusal N since the last success\". Before, every failure that was not temporary was logged as \"Not retrying early\".\n\nThe runner also has new internal handling for when a child process asks for a new machine and for when a child process reports back.\n\n**Why**\n\nPeople running these machines get clearer logs when the server keeps refusing token refreshes.\n\n- Area: Self-Hosted Runner\n- Tier: You'll notice\n- Useful: 1\/5\n- Signal: 1\/5\n- Scope: org\n- Heads-up: no"}