-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathconfig.example.toml
More file actions
202 lines (174 loc) · 6.86 KB
/
config.example.toml
File metadata and controls
202 lines (174 loc) · 6.86 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
# Codey Configuration Example
# Copy this file to: ~/.config/codey/config.toml
[general]
# Working directory (default: current directory)
# working_dir = "/path/to/project"
[agents.foreground]
# Model to use (default: claude-opus-4-6)
model = "claude-opus-4-6"
# Maximum tokens for responses
max_tokens = 8192
# Enable fast mode (research preview) for lower-latency Opus 4.6 responses.
# Uses the same model with a different API configuration that prioritizes speed.
# Higher cost per token ($30/$150 per MTok vs $5/$25 standard).
# Only works with opus-4-6 models. Falls back to standard on rate limit with a 20min cooldown.
# fast_mode = true
# =============================================================================
# Agent Persona
# =============================================================================
# Customize the agent's name and personality. These settings affect how the
# agent introduces itself and displays its name in the chat interface.
[agent]
# Custom name for the agent (default: "Codey")
# This appears in the chat header and welcome message.
# name = "Jarvis"
# Custom system prompt intro/personality (replaces the default "You are Codey..." paragraph)
# Use this to give the agent a different persona or specialized behavior.
# The capabilities and guidelines section is automatically appended.
# system_prompt = "You are Jarvis, a sophisticated AI assistant with a dry wit and encyclopedic knowledge."
[auth]
# Authentication method: "oauth" or "api_key"
method = "oauth"
# API key (only if method = "api_key")
# api_key = "sk-ant-..."
#
# Or set the ANTHROPIC_API_KEY environment variable
[ui]
# Syntax highlighting theme
# Available: base16-ocean.dark, base16-ocean.light, InspiredGitHub, Solarized (dark), Solarized (light)
theme = "base16-ocean.dark"
# Enable auto-scroll when new content arrives
auto_scroll = true
# Show token usage in status bar
show_tokens = true
[tools]
# Tools to enable (leave empty for all)
enabled = ["read_file", "write_file", "edit_file", "shell", "fetch_url"]
# Tool parameter filters for auto-approve/auto-deny
# Evaluation order:
# 1. If any deny pattern matches → auto-deny (blocked)
# 2. If any allow pattern matches → auto-approve (no prompt)
# 3. Otherwise → prompt user for approval
# Shell command filters (matches against 'command' parameter)
[tools.shell]
allow = [
"^ls\\b", # ls commands
"^find\\b", # find commands
"^cat\\b", # cat commands
"^head\\b", # head commands
"^tail\\b", # tail commands
"^grep\\b", # grep commands
"^rg\\b", # ripgrep commands
"^wc\\b", # wc commands
"^pwd$", # pwd command
"^echo\\b", # echo commands
]
deny = [
"rm\\s+-rf\\s+/", # dangerous rm
"sudo\\s+rm", # sudo rm
":(){ :|:& };:", # fork bomb
"\\|\\s*sh\\b", # piping to shell
"\\|\\s*bash\\b", # piping to bash
"curl.*\\|", # curl piped to anything
"wget.*\\|", # wget piped to anything
]
# Read file filters (matches against 'path' parameter)
[tools.read_file]
allow = [
"\\.(rs|toml|md|txt|json|yaml|yml|ts|js|py|go|c|h|cpp|hpp)$", # Common code files
]
deny = [
"\\.env$", # Environment files
"secrets?", # Secret files
"\\.pem$", # Private keys
"\\.key$", # Key files
]
# Write file filters (matches against 'path' parameter)
[tools.write_file]
allow = []
deny = [
"\\.env$", # Environment files
"\\.pem$", # Private keys
"\\.key$", # Key files
]
# Edit file filters (matches against 'path' parameter)
[tools.edit_file]
allow = []
deny = [
"\\.env$", # Environment files
"\\.pem$", # Private keys
]
# URL fetch filters (matches against 'url' parameter)
[tools.fetch_url]
allow = [
"^https://", # Only HTTPS
]
deny = [
"localhost", # No local requests
"127\\.0\\.0\\.1", # No loopback
"192\\.168\\.", # No private networks
"10\\.", # No private networks
"172\\.(1[6-9]|2[0-9]|3[01])\\.", # No private networks
]
# =============================================================================
# Browser Configuration (for fetch_html tool)
# =============================================================================
# Configure Chrome/Chromium settings for the fetch_html tool which uses
# headless browser rendering to fetch web pages.
[browser]
# Path to Chrome/Chromium user data directory.
# This allows sharing cookies and session data with your local browser,
# enabling access to authenticated pages.
#
# How it works:
# 1. Codey copies your Chrome profile to an isolated temp directory
# 2. This avoids Chrome's SingletonLock (which prevents concurrent access)
# 3. Cookies are decrypted using macOS Keychain (or equivalent on other OS)
#
# Common paths:
# Linux: ~/.config/google-chrome (Chrome) or ~/.config/chromium (Chromium)
# macOS: ~/Library/Application Support/Google/Chrome
# Windows: %LOCALAPPDATA%\Google\Chrome\User Data
#
# chrome_user_data_dir = "~/Library/Application Support/Google/Chrome"
# Profile directory name within the user data directory.
# Use this to select a specific Chrome profile (e.g., one created just for Codey).
# If not set, Chrome uses the last-used or Default profile.
#
# To find your profile names, look in the user data directory for folders named
# "Default", "Profile 1", "Profile 2", etc. Or check chrome://version in Chrome.
#
# chrome_profile = "Profile 9"
# Run browser in headless mode (default: true)
# Set to false to see what the browser is doing (useful for debugging)
#
# headless = true
# Viewport dimensions in pixels
# Taller viewports help load more content on infinite-scroll pages like Twitter/X
# Default: 800x4000
#
# viewport_width = 800
# viewport_height = 4000
# Time to wait for JavaScript to render in milliseconds (default: 10000)
# SPAs like Twitter need time to load and render content after initial page load.
# Increase this if pages aren't fully loaded, decrease for faster simple pages.
#
# page_load_wait_ms = 10000
# Custom Chrome/Chromium executable path (optional)
# If not set, auto-detects from PATH or standard installation locations.
#
# chrome_executable = "/usr/bin/google-chrome"
# =============================================================================
# Neovim Integration
# =============================================================================
# Codey connects to Neovim via RPC socket for diff previews, buffer management,
# and navigation. Start nvim with: nvim --listen /tmp/nvim-$(tmux display -p '#S').sock
[ide.nvim]
# Enable neovim integration
enabled = true
# Explicit socket path (optional - auto-discovers from tmux or $NVIM_LISTEN_ADDRESS)
# socket = "/tmp/nvim.sock"
# Show diff/file previews in nvim before approving changes
show_diffs = true
# Automatically reload buffers after file modifications
auto_reload = true