{"version":"2.1.314","anchor":"claude-code-upfront-tools-new-env-var-that-names-tools-to-l","canonical_anchor":"claude-code-upfront-tools-new-env-var-that-names-tools-to-l","heading":"New CLAUDE_CODE_UPFRONT_TOOLS variable picks tools to load at the start","tier":"use","area":"Tool Loading","scope":"individual","heads_up":false,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.314\/e\/claude-code-upfront-tools-new-env-var-that-names-tools-to-l","release_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.314","markdown":"### New `CLAUDE_CODE_UPFRONT_TOOLS` variable picks tools to load at the start\n\nSetting `CLAUDE_CODE_UPFRONT_TOOLS` to a list of tool names makes those tools load at the start instead of being held back until needed\n\n**Unclear.** How the tool names in `CLAUDE_CODE_UPFRONT_TOOLS` should be separated is not stated.\n\n**What**\n\nClaude Code can hold some tools back and only load them when Claude needs them, which is called deferring them. A new environment variable (a setting passed to a program when it starts), `CLAUDE_CODE_UPFRONT_TOOLS`, takes a list of tool names. Tools on the list are not deferred while the set of tools for the session has not yet been decided.\n\nSome details:\n\n- MCP tools that come from claude.ai are never affected.\n\n- The variable is passed on to helper processes Claude Code starts, so it reaches them too.\n\n- Claude Code never sets it itself. Whatever launches Claude Code has to supply it.\n\n- The number of names given is recorded in usage data.\n\n**Why**\n\nWhoever launches Claude Code can now choose which tools are loaded from the start, rather than waiting until Claude asks for them.\n\n- Area: Tool Loading\n- Names: `CLAUDE_CODE_UPFRONT_TOOLS`\n- Tier: Use it now\n- Useful: 5\/5\n- Signal: 3\/5\n- Scope: individual\n- Heads-up: no"}