Skip to content
Merged
Show file tree
Hide file tree
Changes from 26 commits
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
36cebbd
feat: refactor claude code to use agentapi module
35C4n0r Aug 30, 2025
6c5fbee
ref: bun fmt
35C4n0r Aug 30, 2025
02c8c4a
Merge branch 'main' into feat-claude-agentapi
35C4n0r Aug 30, 2025
9411582
feat: additional documentation
35C4n0r Aug 30, 2025
7fb8b86
ref: bun fmt
35C4n0r Aug 30, 2025
2b23801
feat: need to test if this works
35C4n0r Aug 30, 2025
4d53c76
feat: option to disable agentapi
35C4n0r Sep 4, 2025
fb2578c
revert changes
35C4n0r Sep 5, 2025
f5970dd
fix: fix tests
35C4n0r Sep 5, 2025
e51b46f
fix: fix tests
35C4n0r Sep 5, 2025
76fbed1
feat: add default
35C4n0r Sep 5, 2025
da5a5ee
feat: remove bedrock flag
35C4n0r Sep 7, 2025
edbf22d
feat: remove bedrock flag
35C4n0r Sep 7, 2025
70dbf5f
feat: add subdomain
35C4n0r Sep 10, 2025
06bb857
chore: format test
35C4n0r Sep 10, 2025
90d54c8
chore: resolve claude comments
35C4n0r Sep 12, 2025
a8eb4a7
feat: set subdomain default to false
35C4n0r Sep 12, 2025
b821ddd
Merge branch 'main' into feat-claude-agentapi
DevelopmentCats Sep 12, 2025
0551991
feat: address comments
35C4n0r Sep 13, 2025
d356bf2
feat: address comments
35C4n0r Sep 13, 2025
4a34f8d
chore: bun fmt
35C4n0r Sep 13, 2025
9406c9f
chore: address comments
35C4n0r Sep 13, 2025
20d115a
feat: add some new variables
35C4n0r Sep 15, 2025
6676679
feat: add some new variables
35C4n0r Sep 15, 2025
9e4c4eb
Merge branch 'main' into feat-claude-agentapi
35C4n0r Sep 15, 2025
8f8f28d
chore: improve README.md
35C4n0r Sep 15, 2025
dd22db2
chore: remove continue from example
35C4n0r Sep 16, 2025
bac0a4b
Update registry/coder/modules/claude-code/main.tf
35C4n0r Sep 16, 2025
43e1a08
Update registry/coder/modules/claude-code/README.md
35C4n0r Sep 16, 2025
c4fae64
chore: add claude_api_key variable to first usage example
DevelopmentCats Sep 18, 2025
a9fe876
feat: add explicit example for usage with claude code subscription
35C4n0r Sep 18, 2025
8475c27
Merge branch 'main' into feat-claude-agentapi
35C4n0r Sep 18, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
140 changes: 71 additions & 69 deletions registry/coder/modules/claude-code/README.md
Original file line number Diff line number Diff line change
@@ -1,120 +1,122 @@
---
display_name: Claude Code
description: Run Claude Code in your workspace
description: Run the Claude Code agent in your workspace.
icon: ../../../../.icons/claude.svg
verified: true
tags: [agent, claude-code, ai, tasks]
tags: [agent, claude-code, ai, tasks, anthropic]
---

# Claude Code

Run the [Claude Code](https://docs.anthropic.com/en/docs/agents-and-tools/claude-code/overview) agent in your workspace to generate code and perform tasks.
Run the [Claude Code](https://docs.anthropic.com/en/docs/agents-and-tools/claude-code/overview) agent in your workspace to generate code and perform tasks. This module integrates with [AgentAPI](https://github.com/coder/agentapi) for task reporting in the Coder UI.

```tf
module "claude-code" {
source = "registry.coder.com/coder/claude-code/coder"
version = "2.2.1"
agent_id = coder_agent.example.id
folder = "/home/coder"
install_claude_code = true
claude_code_version = "latest"
source = "registry.coder.com/coder/claude-code/coder"
version = "3.0.0"
agent_id = coder_agent.example.id
workdir = "/home/coder/project"
}
```

> **Security Notice**: This module uses the [`--dangerously-skip-permissions`](https://docs.anthropic.com/en/docs/claude-code/cli-usage#cli-flags) flag when running Claude Code. This flag
> bypasses standard permission checks and allows Claude Code broader access to your system than normally permitted. While
> this enables more functionality, it also means Claude Code can potentially execute commands with the same privileges as
> the user running it. Use this module _only_ in trusted environments and be aware of the security implications.
> [!WARNING]
> **Security Notice**: This module uses the `--dangerously-skip-permissions` flag when running Claude Code tasks. This flag bypasses standard permission checks and allows Claude Code broader access to your system than normally permitted. While this enables more functionality, it also means Claude Code can potentially execute commands with the same privileges as the user running it. Use this module _only_ in trusted environments and be aware of the security implications.
> [!NOTE]
> By default, this module is configured to run the embedded chat interface as a path-based application. In production, we recommend that you configure a [wildcard access URL](https://coder.com/docs/admin/setup#wildcard-access-url) and set `subdomain = true`. See [here](https://coder.com/docs/tutorials/best-practices/security-best-practices#disable-path-based-apps) for more details.
## Prerequisites

- You must add the [Coder Login](https://registry.coder.com/modules/coder-login) module to your template

The `codercom/oss-dogfood:latest` container image can be used for testing on container-based workspaces.
- An **Anthropic API key** or a _Claude Session Token_ is required for tasks.
- You can get the API key from the [Anthropic Console](https://console.anthropic.com/dashboard).
- You can get the Session Token using the `claude setup-token` command. This is a long-lived authentication token (requires Claude subscription)

## Examples

### Run in the background and report tasks (Experimental)
### Usage with Tasks and Advanced Configuration

> This functionality is in early access as of Coder v2.21 and is still evolving.
> For now, we recommend testing it in a demo or staging environment,
> rather than deploying to production
>
> Learn more in [the Coder documentation](https://coder.com/docs/tutorials/ai-agents)
>
> Join our [Discord channel](https://discord.gg/coder) or
> [contact us](https://coder.com/contact) to get help or share feedback.
This example shows how to configure the Claude Code module with an ai prompt, API key, and other custom settings.

```tf
variable "anthropic_api_key" {
type = string
description = "The Anthropic API key"
sensitive = true
}
module "coder-login" {
count = data.coder_workspace.me.start_count
source = "registry.coder.com/coder/coder-login/coder"
version = "1.0.15"
agent_id = coder_agent.example.id
}
data "coder_parameter" "ai_prompt" {
type = "string"
name = "AI Prompt"
default = ""
description = "Write a prompt for Claude Code"
description = "Initial task prompt for Claude Code."
mutable = true
}
# Set the prompt and system prompt for Claude Code via environment variables
resource "coder_agent" "main" {
# ...
env = {
CODER_MCP_CLAUDE_API_KEY = var.anthropic_api_key # or use a coder_parameter
CODER_MCP_CLAUDE_TASK_PROMPT = data.coder_parameter.ai_prompt.value
CODER_MCP_APP_STATUS_SLUG = "claude-code"
CODER_MCP_CLAUDE_SYSTEM_PROMPT = <<-EOT
You are a helpful assistant that can help with code.
EOT
}
}
module "claude-code" {
count = data.coder_workspace.me.start_count
source = "registry.coder.com/coder/claude-code/coder"
version = "2.2.1"
agent_id = coder_agent.example.id
folder = "/home/coder"
install_claude_code = true
claude_code_version = "1.0.40"
source = "registry.coder.com/coder/claude-code/coder"
version = "3.0.0"
agent_id = coder_agent.example.id
workdir = "/home/coder/project"
claude_api_key = "xxxx-xxxxx-xxxx"
# OR
claude_code_oauth_token = "xxxxx-xxxx-xxxx"
claude_code_version = "1.0.82" # Pin to a specific version
agentapi_version = "v0.6.1"
# Enable experimental features
experiment_report_tasks = true
ai_prompt = data.coder_parameter.ai_prompt.value
continue = true # will fail in a new workspace with no conversation/session to continue
model = "sonnet"
permission_mode = "plan"
mcp = <<-EOF
{
"mcpServers": {
"my-custom-tool": {
"command": "my-tool-server"
"args": ["--port", "8080"]
}
}
}
EOF
}
```

## Run standalone
### Standalone Mode

Run Claude Code as a standalone app in your workspace. This will install Claude Code and run it without any task reporting to the Coder UI.
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 = "2.2.1"
version = "3.0.0"
agent_id = coder_agent.example.id
folder = "/home/coder"
workdir = "/home/coder"
install_claude_code = true
claude_code_version = "latest"
# Icon is not available in Coder v2.20 and below, so we'll use a custom icon URL
icon = "https://registry.npmmirror.com/@lobehub/icons-static-png/1.24.0/files/dark/claude-color.png"
report_tasks = false
cli_app = true
}
```

## Troubleshooting

The module will create log files in the workspace's `~/.claude-module` directory. If you run into any issues, look at them for more information.
If you encounter any issues, check the log files in the `~/.claude-module` directory within your workspace for detailed information.

```bash
# Installation logs
cat ~/.claude-module/install.log

# Startup logs
cat ~/.claude-module/agentapi-start.log

# Pre/post install script logs
cat ~/.claude-module/pre_install.log
cat ~/.claude-module/post_install.log
```

> [!NOTE]
> To use tasks with Claude Code, you must provide an `anthropic_api_key` or `claude_code_oauth_token`.
> The `workdir` variable is required and specifies the directory where Claude Code will run.
## References

- [Claude Code Documentation](https://docs.anthropic.com/en/docs/agents-and-tools/claude-code/overview)
- [AgentAPI Documentation](https://github.com/coder/agentapi)
- [Coder AI Agents Guide](https://coder.com/docs/tutorials/ai-agents)
Loading