{"name":"SELF_HOSTED_RUNNER_HOOKS_DIR","slug":"self-hosted-runner-hooks-dir","family":"env","title":"Environment variables","noun":"environment variable","description":"The runner now has Windows errors for hooks and orchestrator mode, but they never fire.","description_source":"entry","described_by":{"version":"2.1.229","anchor":"windows-guards-for-runner-hooks-that-may-not-be-reachable"},"presence":{"first_seen":"2.1.224","removed_in":null,"in_current_build":true,"newest_mined":"2.1.309","builds":74,"mined_builds":150,"first_cited":null},"aliases":[],"entries":[{"version":"2.1.229","anchor":"windows-guards-for-runner-hooks-that-may-not-be-reachable","heading":"Windows guards for runner hooks that may not be reachable","line":"The runner now has Windows errors for hooks and orchestrator mode, but they never fire.","released_at":"2026-08-12 19:28:48","reason":"named in this entry, found in this entry's text"},{"version":"2.1.229","anchor":"self-hosted-runner-accepts-a-settings-file-and-rejects-hooks","heading":"Self-hosted runner accepts a settings file, and rejects hooks and orchestrator mode on Windows","line":"The runner can pass a settings file to sessions; its Windows hooks guard never actually fires.","released_at":"2026-08-12 19:28:48","reason":"named in this entry, found in this entry's text"}],"entries_total":2,"docs":[{"source":"claude-code","path":"self-hosted-environments-configuration","title":"Customize sessions in self-hosted environments","documented":false},{"source":"claude-code","path":"self-hosted-environments-reference","title":"Self-hosted environments reference","documented":false}],"docs_total":2,"gates":[],"related":[{"name":"SELF_HOSTED_RUNNER_AGENT_PROXY_URL","slug":"self-hosted-runner-agent-proxy-url","description":"The self-hosted runner reads its proxy from --agent-proxy-url, limits checkout hook time and tightens how nested-repository diffs are shown"},{"name":"SELF_HOSTED_RUNNER_BASE_DIR","slug":"self-hosted-runner-base-dir","description":"The self-hosted runner fails fast if its base directory is unwritable or the mount hangs."},{"name":"SELF_HOSTED_RUNNER_BG_RESULT_GRACE_MS","slug":"self-hosted-runner-bg-result-grace-ms","description":"Self-hosted runners hold shutdown until a finished background task is read; the grace window is configurable."},{"name":"SELF_HOSTED_RUNNER_CHECKOUT_HOOK_TIMEOUT_MS","slug":"self-hosted-runner-checkout-hook-timeout-ms","description":null},{"name":"SELF_HOSTED_RUNNER_CLIENT_LABEL","slug":"self-hosted-runner-client-label","description":"Name a self-hosted runner with --client-label or an env var instead of using the hostname."},{"name":"SELF_HOSTED_RUNNER_CONFIGURE_GIT","slug":"self-hosted-runner-configure-git","description":"A truthy value (`1`, `true`, `yes`, `on`) turns on `--configure-git` for `claude self-hosted-runner`: at startup the runner writes global git config setting `user.name` to `Claude`, `user.email` to `noreply@anthropic.com`, SSH signing of commits and tags through a `code-sign` shim under `<base-dir>\/.runner\/`, and `push.negotiate`. A failure there is fatal; the setting also makes commits made by lifecycle hooks signed per session."},{"name":"SELF_HOSTED_RUNNER_CONFINE_REPO_SETTINGS","slug":"self-hosted-runner-confine-repo-settings","description":"The runner can warn about or block repo-committed settings that grant access outside the workspace."},{"name":"SELF_HOSTED_RUNNER_DEBUG_DIR","slug":"self-hosted-runner-debug-dir","description":"Directory for debug artifacts of the `claude self-hosted-runner` orchestrator: after each spawn-runner hook run it writes `<jti>.jwt`, `<jti>.json` (the decoded work-order claims) and `<jti>.stderr` (the hook's stderr or failure message) with mode `0600`, and deletes matching files older than 5 minutes. The directory is created at startup; if that fails the orchestrator continues without debug artifacts."},{"name":"SELF_HOSTED_RUNNER_DEBUG_TOKEN_DIR","slug":"self-hosted-runner-debug-token-dir","description":"Directory where `claude self-hosted-runner` writes live credentials for debugging: `runner_token.jwt` at registration and on each refresh, and per session `session_token_<id>.jwt` and `inference_token_<id>.txt`. The directory is created with mode `0700` and the files with mode `0600`; write failures are logged and ignored. `--debug-token-dir` sets the same option."},{"name":"SELF_HOSTED_RUNNER_DEFER_SHUTDOWN_MAX_MS","slug":"self-hosted-runner-defer-shutdown-max-ms","description":"Self-hosted runners can keep serving attached sessions on the first shutdown signal instead of draining."}],"url":"https:\/\/changelogs.core-directive.com\/reference\/env\/self-hosted-runner-hooks-dir","family_url":"https:\/\/changelogs.core-directive.com\/reference\/env.json"}