Quick reference for all CodeForge configuration options.
| Task | File to Edit |
|---|---|
| Change default model | config/defaults/settings.json |
| Change system prompt | config/defaults/main-system-prompt.md |
| Customize keybindings | config/defaults/keybindings.json |
| Control setup steps | .env |
| Add custom config file | config/file-manifest.json |
| Disable a feature | devcontainer.json (set "version": "none") |
| Disable a plugin | config/defaults/settings.json (remove from enabledPlugins) |
| Skip a plugin install | .env (PLUGIN_BLACKLIST) |
| Change container memory | devcontainer.json (runArgs) |
| Add VS Code extension | devcontainer.json (customizations.vscode.extensions) |
These control what setup.sh does on each container start. Copy .env.example to .env and customize.
| Variable | Default | Description |
|---|---|---|
CLAUDE_CONFIG_DIR |
/home/vscode/.claude |
Where Claude Code config files are stored |
CONFIG_SOURCE_DIR |
(auto-detected) |
Source directory for config defaults |
SETUP_CONFIG |
true |
Copy config files per file-manifest.json |
SETUP_ALIASES |
true |
Add cc/claude/ccraw/cc-tools aliases to shell |
SETUP_AUTH |
true |
Configure Git/NPM auth from .secrets file |
SETUP_PLUGINS |
true |
Install Anthropic plugins + register local marketplace |
SETUP_UPDATE_CLAUDE |
true |
Background-update Claude Code CLI binary |
SETUP_TERMINAL |
true |
Configure VS Code Shift+Enter keybinding for Claude Code terminal |
SETUP_PROJECTS |
true |
Auto-detect projects for VS Code Project Manager |
SETUP_POSTSTART |
true |
Run post-start hooks from /usr/local/devcontainer-poststart.d/ |
PLUGIN_BLACKLIST |
"" |
Comma-separated plugin names to skip during installation |
These environment variables are set in every terminal session inside the container.
| Variable | Value | Description |
|---|---|---|
WORKSPACE_ROOT |
/workspaces |
Workspace root directory |
CLAUDE_CONFIG_DIR |
/home/vscode/.claude |
Claude Code config directory |
GH_CONFIG_DIR |
/workspaces/.gh |
GitHub CLI config directory |
TMPDIR |
/workspaces/.tmp |
Temporary files directory |
CLAUDECODE |
null (unset) |
Unsets the variable to allow nested Claude Code sessions (claude-in-claude) |
Each entry in the manifest array controls how a config file is deployed:
{
"src": "defaults/settings.json",
"dest": "${CLAUDE_CONFIG_DIR}",
"destFilename": "settings.json",
"overwrite": "if-changed",
"enabled": true
}| Field | Required | Default | Description |
|---|---|---|---|
src |
Yes | — | Source file path relative to config/ |
dest |
Yes | — | Destination directory (supports ${CLAUDE_CONFIG_DIR}, ${WORKSPACE_ROOT}) |
destFilename |
No | basename of src |
Override the destination filename |
overwrite |
No | "if-changed" |
"always", "never", or "if-changed" (sha256 comparison) |
enabled |
No | true |
Set false to skip this entry |
Each feature in devcontainer.json supports options defined in its devcontainer-feature.json. Common options:
| Option | Description | Used By |
|---|---|---|
version |
Tool version to install. "none" skips installation. |
All local features |
username |
Container user to install for. "automatic" auto-detects. |
dprint, ruff, ccusage, ccburn, etc. |
shells |
Which shell rc files to modify ("both", "bash", "zsh"). |
ccusage, ccburn |
Create .devcontainer/.secrets with tokens for automatic authentication:
GH_TOKEN=ghp_your_token_here
GH_USERNAME=your-github-username
GH_EMAIL=your-email@example.com
NPM_TOKEN=npm_your_token_here
CLAUDE_AUTH_TOKEN=sk-ant-oat01-your-token-hereThe CLAUDE_AUTH_TOKEN is a long-lived token from claude setup-token. When set, setup-auth.sh creates ~/.claude/.credentials.json on container start (skips if already exists).
Environment variables with the same names take precedence over .secrets file values (useful for Codespaces).