From e4606c51f3caa79d941d59060e7f19484fc6e66c Mon Sep 17 00:00:00 2001 From: 35C4n0r <70096901+35C4n0r@users.noreply.github.com> Date: Thu, 29 Jan 2026 22:37:18 +0530 Subject: [PATCH] feat(coder/modules/claude-code): update claude to use binary installation for specific version pinning (#681) ## Description - Update claude-code module to use binary installation incase of specific version pinning unless use npm is specified. - Add a deprecation warning in the install script and readme for npm. ## Type of Change - [ ] New module - [ ] New template - [x] Bug fix - [ ] Feature/enhancement - [ ] Documentation - [ ] Other ## Module Information **Path:** `registry/coder/modules/claude-code` **New version:** `v4.7.1` **Breaking change:** [ ] Yes [x] No ## Testing & Validation - [x] Tests pass (`bun test`) - [x] Code formatted (`bun fmt`) - [x] Changes tested locally ## Related Issues --- registry/coder/modules/claude-code/README.md | 25 +++++++++++-------- .../modules/claude-code/scripts/install.sh | 5 ++-- 2 files changed, 17 insertions(+), 13 deletions(-) diff --git a/registry/coder/modules/claude-code/README.md b/registry/coder/modules/claude-code/README.md index 984830f9..b27fe1e9 100644 --- a/registry/coder/modules/claude-code/README.md +++ b/registry/coder/modules/claude-code/README.md @@ -13,7 +13,7 @@ Run the [Claude Code](https://docs.anthropic.com/en/docs/agents-and-tools/claude ```tf module "claude-code" { source = "registry.coder.com/coder/claude-code/coder" - version = "4.7.0" + version = "4.7.1" agent_id = coder_agent.main.id workdir = "/home/coder/project" claude_api_key = "xxxx-xxxxx-xxxx" @@ -47,7 +47,7 @@ By default, when `enable_boundary = true`, the module uses `coder boundary` subc ```tf module "claude-code" { source = "registry.coder.com/coder/claude-code/coder" - version = "4.7.0" + version = "4.7.1" agent_id = coder_agent.main.id workdir = "/home/coder/project" enable_boundary = true @@ -68,7 +68,7 @@ For tasks integration with AI Bridge, add `enable_aibridge = true` to the [Usage ```tf module "claude-code" { source = "registry.coder.com/coder/claude-code/coder" - version = "4.7.0" + version = "4.7.1" agent_id = coder_agent.main.id workdir = "/home/coder/project" enable_aibridge = true @@ -97,7 +97,7 @@ data "coder_task" "me" {} module "claude-code" { source = "registry.coder.com/coder/claude-code/coder" - version = "4.7.0" + version = "4.7.1" agent_id = coder_agent.main.id workdir = "/home/coder/project" claude_api_key = "xxxx-xxxxx-xxxx" @@ -113,12 +113,15 @@ module "claude-code" { This example shows additional configuration options for version pinning, custom models, and MCP servers. > [!NOTE] -> When a specific `claude_code_version` (other than "latest") is provided, the module will install Claude Code via npm instead of the official installer. This allows for version pinning. The `claude_binary_path` variable can be used to specify where a pre-installed Claude binary is located. +> The `claude_binary_path` variable can be used to specify where a pre-installed Claude binary is located. + +> [!WARNING] +> **Deprecation Notice**: The npm installation method (`install_via_npm = true`) will be deprecated and removed in the next major release. Please use the default binary installation method instead. ```tf module "claude-code" { source = "registry.coder.com/coder/claude-code/coder" - version = "4.7.0" + version = "4.7.1" agent_id = coder_agent.main.id workdir = "/home/coder/project" @@ -126,7 +129,7 @@ module "claude-code" { # OR claude_code_oauth_token = "xxxxx-xxxx-xxxx" - claude_code_version = "2.0.62" # Pin to a specific version (uses npm) + claude_code_version = "2.0.62" # Pin to a specific version claude_binary_path = "/opt/claude/bin" # Path to pre-installed Claude binary agentapi_version = "0.11.4" @@ -174,7 +177,7 @@ Run and configure Claude Code as a standalone CLI in your workspace. ```tf module "claude-code" { source = "registry.coder.com/coder/claude-code/coder" - version = "4.7.0" + version = "4.7.1" agent_id = coder_agent.main.id workdir = "/home/coder/project" install_claude_code = true @@ -196,7 +199,7 @@ variable "claude_code_oauth_token" { module "claude-code" { source = "registry.coder.com/coder/claude-code/coder" - version = "4.7.0" + version = "4.7.1" agent_id = coder_agent.main.id workdir = "/home/coder/project" claude_code_oauth_token = var.claude_code_oauth_token @@ -269,7 +272,7 @@ resource "coder_env" "bedrock_api_key" { module "claude-code" { source = "registry.coder.com/coder/claude-code/coder" - version = "4.7.0" + version = "4.7.1" agent_id = coder_agent.main.id workdir = "/home/coder/project" model = "global.anthropic.claude-sonnet-4-5-20250929-v1:0" @@ -326,7 +329,7 @@ resource "coder_env" "google_application_credentials" { module "claude-code" { source = "registry.coder.com/coder/claude-code/coder" - version = "4.7.0" + version = "4.7.1" agent_id = coder_agent.main.id workdir = "/home/coder/project" model = "claude-sonnet-4@20250514" diff --git a/registry/coder/modules/claude-code/scripts/install.sh b/registry/coder/modules/claude-code/scripts/install.sh index b8e4fba2..d87a83b7 100644 --- a/registry/coder/modules/claude-code/scripts/install.sh +++ b/registry/coder/modules/claude-code/scripts/install.sh @@ -93,8 +93,9 @@ function install_claude_code_cli() { return fi - # Use npm when install_via_npm is true or for specific version pinning - if [ "$ARG_INSTALL_VIA_NPM" = "true" ] || { [ -n "$ARG_CLAUDE_CODE_VERSION" ] && [ "$ARG_CLAUDE_CODE_VERSION" != "latest" ]; }; then + # Use npm when install_via_npm is true + if [ "$ARG_INSTALL_VIA_NPM" = "true" ]; then + echo "WARNING: npm installation method will be deprecated and removed in the next major release." echo "Installing Claude Code via npm (version: $ARG_CLAUDE_CODE_VERSION)" npm install -g "@anthropic-ai/claude-code@$ARG_CLAUDE_CODE_VERSION" echo "Installed Claude Code via npm. Version: $(claude --version || echo 'unknown')"