claude-cac 1.2.0 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -51,11 +51,8 @@ curl -fsSL https://raw.githubusercontent.com/nmhjklnm/cac/master/install.sh | ba
51
51
  # 安装 Claude Code
52
52
  cac claude install latest
53
53
 
54
- # 创建环境
55
- cac env create work -p 1.2.3.4:1080:u:p -c latest
56
-
57
- # 激活
58
- cac work
54
+ # 创建环境(自动激活,自动使用最新版)
55
+ cac env create work -p 1.2.3.4:1080:u:p
59
56
 
60
57
  # 启动 Claude Code(首次需 /login)
61
58
  claude
@@ -81,9 +78,12 @@ cac claude uninstall 2.1.81 # 卸载
81
78
  ### 环境管理
82
79
 
83
80
  ```bash
84
- cac env create <name> [-p <proxy>] [-c <version>] [--type local|container]
81
+ cac env create <name> [-p <proxy>] [-c <version>] # 创建并自动激活(自动解析最新版)
85
82
  cac env ls # 列出所有环境
86
83
  cac env rm <name> # 删除环境
84
+ cac env set [name] proxy <url> # 设置 / 修改代理
85
+ cac env set [name] proxy --remove # 移除代理
86
+ cac env set [name] version <ver> # 切换版本
87
87
  cac <name> # 激活环境(快捷方式)
88
88
  cac ls # = cac env ls
89
89
  ```
@@ -104,18 +104,18 @@ cac ls # = cac env ls
104
104
  | `cac claude ls` | 列出已安装版本 |
105
105
  | `cac claude pin <ver>` | 当前环境绑定版本 |
106
106
  | **环境管理** | |
107
- | `cac env create <name> [-p proxy] [-c ver]` | 创建环境 |
107
+ | `cac env create <name> [-p proxy] [-c ver]` | 创建环境(自动激活) |
108
108
  | `cac env ls` | 列出环境 |
109
109
  | `cac env rm <name>` | 删除环境 |
110
+ | `cac env set [name] <key> <value>` | 修改环境(proxy / version) |
111
+ | `cac env check [-d]` | 验证当前环境(`-d` 显示详情) |
110
112
  | `cac <name>` | 激活环境 |
111
113
  | **自管理** | |
112
114
  | `cac self update` | 更新 cac 自身 |
115
+ | `cac self delete` | 卸载 cac |
113
116
  | **其他** | |
114
117
  | `cac ls` | 列出环境(= `cac env ls`) |
115
- | `cac check` | 检查当前环境 |
116
- | `cac relay on\|off\|status` | 本地中转(绕过 TUN) |
117
- | `cac stop` / `cac resume` | 暂停 / 恢复保护 |
118
- | `cac delete` | 卸载 cac |
118
+ | `cac check` | 检查当前环境(`cac env check` 的别名) |
119
119
  | `cac -v` | 版本号 |
120
120
 
121
121
  ### 代理格式
@@ -134,7 +134,7 @@ socks5://u:p@host:port 指定协议
134
134
  | 主机名 / MAC 隔离 | Shell shim + Node.js `os.hostname()` / `os.networkInterfaces()` hook |
135
135
  | Node.js 指纹钩子 | `fingerprint-hook.js` 通过 `NODE_OPTIONS --require` 注入 |
136
136
  | 遥测阻断 | DNS guard + 12 层环境变量 + fetch 拦截 + HOSTALIASES |
137
- | 健康检查 bypass | 本地 HTTPS server + `/etc/hosts` + `NO_PROXY` |
137
+ | 健康检查 bypass | 进程内 Node.js 拦截(无需 /etc/hosts root) |
138
138
  | mTLS 客户端证书 | 自签 CA + 每环境独立客户端证书 |
139
139
  | `.claude` 配置隔离 | 每个环境独立的 `CLAUDE_CONFIG_DIR` |
140
140
 
@@ -145,7 +145,7 @@ socks5://u:p@host:port 指定协议
145
145
  ┌──────────────────────────────────────────┐
146
146
  claude ────►│ CLAUDE_CONFIG_DIR → 隔离配置目录 │
147
147
  │ 版本解析 → ~/.cac/versions/<ver>/claude │
148
- │ 健康检查 bypass(本地 HTTPS server)
148
+ │ 健康检查 bypass(进程内拦截)
149
149
  │ 12 层遥测环境变量保护 │──► 代理 ──► Anthropic API
150
150
  │ NODE_OPTIONS: DNS guard + 指纹钩子 │
151
151
  │ PATH: 设备指纹 shim │
@@ -166,9 +166,11 @@ socks5://u:p@host:port 指定协议
166
166
  ├── current # 当前激活的环境名
167
167
  └── envs/<name>/
168
168
  ├── .claude/ # 隔离的 .claude 配置目录
169
+ │ ├── settings.json # 环境专属设置
170
+ │ ├── CLAUDE.md # 环境专属记忆
171
+ │ └── statusline-command.sh
169
172
  ├── proxy # 代理地址(可选)
170
173
  ├── version # 绑定的 Claude Code 版本
171
- ├── type # local / container
172
174
  ├── uuid / stable_id # 隔离身份
173
175
  ├── hostname / mac_address / machine_id
174
176
  └── client_cert.pem # mTLS 证书
@@ -190,8 +192,12 @@ cac docker port 6287 # 端口转发
190
192
 
191
193
  ### 注意事项
192
194
 
195
+ > **代理工具冲突**:如果本地启动了 Clash、Shadowrocket、Surge、sing-box 等代理/VPN 工具,建议在使用 cac 时先关闭。TUN 模式兼容性仍属实验性功能。即使发生冲突,cac 也会自动停止连接(fail-closed),**不会泄露你的真实 IP**。
196
+
193
197
  - **首次登录**:启动 `claude` 后,输入 `/login` 完成 OAuth 授权
194
- - **TUN 冲突**:使用 `cac relay on` 或在 TUN 软件中为代理 IP 添加 DIRECT 规则
198
+ - **安全验证**:随时运行 `cac env check` 确认隐私保护状态,也可以 `which claude` 确认使用的是 cac 托管的 claude
199
+ - **自动安全检查**:每次启动 Claude Code 会话时,cac 会快速检查环境。如有异常会终止会话,不会发送任何数据
200
+ - **网络稳定性**:流量严格走代理——代理断开时流量完全停止,不会回退直连
195
201
  - **IPv6**:建议系统级关闭,防止真实地址泄露
196
202
 
197
203
  ---
@@ -227,11 +233,8 @@ curl -fsSL https://raw.githubusercontent.com/nmhjklnm/cac/master/install.sh | ba
227
233
  # Install Claude Code
228
234
  cac claude install latest
229
235
 
230
- # Create environment
231
- cac env create work -p 1.2.3.4:1080:u:p -c latest
232
-
233
- # Activate
234
- cac work
236
+ # Create environment (auto-activates, auto-resolves latest version)
237
+ cac env create work -p 1.2.3.4:1080:u:p
235
238
 
236
239
  # Run Claude Code (first time: /login)
237
240
  claude
@@ -257,9 +260,12 @@ cac claude uninstall 2.1.81 # remove
257
260
  ### Environment management
258
261
 
259
262
  ```bash
260
- cac env create <name> [-p <proxy>] [-c <version>] [--type local|container]
263
+ cac env create <name> [-p <proxy>] [-c <version>] # create and auto-activate (auto-resolves latest)
261
264
  cac env ls # list all environments
262
265
  cac env rm <name> # remove environment
266
+ cac env set [name] proxy <url> # set / change proxy
267
+ cac env set [name] proxy --remove # remove proxy
268
+ cac env set [name] version <ver> # change version
263
269
  cac <name> # activate (shortcut)
264
270
  cac ls # = cac env ls
265
271
  ```
@@ -280,18 +286,18 @@ Each environment is fully isolated:
280
286
  | `cac claude ls` | List installed versions |
281
287
  | `cac claude pin <ver>` | Pin current env to version |
282
288
  | **Environment management** | |
283
- | `cac env create <name> [-p proxy] [-c ver]` | Create environment |
289
+ | `cac env create <name> [-p proxy] [-c ver]` | Create environment (auto-activates) |
284
290
  | `cac env ls` | List environments |
285
291
  | `cac env rm <name>` | Remove environment |
292
+ | `cac env set [name] <key> <value>` | Modify environment (proxy / version) |
293
+ | `cac env check [-d]` | Verify current environment (`-d` for details) |
286
294
  | `cac <name>` | Activate environment |
287
295
  | **Self-management** | |
288
296
  | `cac self update` | Update cac itself |
297
+ | `cac self delete` | Uninstall cac |
289
298
  | **Other** | |
290
299
  | `cac ls` | List environments (= `cac env ls`) |
291
- | `cac check` | Verify current environment |
292
- | `cac relay on\|off\|status` | Local relay (bypass TUN) |
293
- | `cac stop` / `cac resume` | Pause / resume protection |
294
- | `cac delete` | Uninstall cac |
300
+ | `cac check` | Verify environment (alias for `cac env check`) |
295
301
  | `cac -v` | Show version |
296
302
 
297
303
  ### Privacy protection
@@ -302,7 +308,7 @@ Each environment is fully isolated:
302
308
  | Hostname / MAC isolation | Shell shim + Node.js `os.hostname()` / `os.networkInterfaces()` hook |
303
309
  | Node.js fingerprint hook | `fingerprint-hook.js` via `NODE_OPTIONS --require` |
304
310
  | Telemetry blocking | DNS guard + 12 env vars + fetch interception + HOSTALIASES |
305
- | Health check bypass | Local HTTPS server + `/etc/hosts` + `NO_PROXY` |
311
+ | Health check bypass | In-process Node.js interception (no `/etc/hosts`, no root) |
306
312
  | mTLS client certificates | Self-signed CA + per-profile client certs |
307
313
  | `.claude` config isolation | Per-environment `CLAUDE_CONFIG_DIR` |
308
314
 
@@ -313,7 +319,7 @@ Each environment is fully isolated:
313
319
  ┌──────────────────────────────────────────┐
314
320
  claude ────►│ CLAUDE_CONFIG_DIR → isolated config dir │
315
321
  │ Version resolve → ~/.cac/versions/<ver> │
316
- │ Health check bypass (local HTTPS server)
322
+ │ Health check bypass (in-process intercept)
317
323
  │ Env vars: 12-layer telemetry kill │──► Proxy ──► Anthropic API
318
324
  │ NODE_OPTIONS: DNS guard + fingerprint │
319
325
  │ PATH: device fingerprint shims │
@@ -334,9 +340,11 @@ Each environment is fully isolated:
334
340
  ├── current # active environment name
335
341
  └── envs/<name>/
336
342
  ├── .claude/ # isolated .claude config directory
343
+ │ ├── settings.json # env-specific settings
344
+ │ ├── CLAUDE.md # env-specific memory
345
+ │ └── statusline-command.sh
337
346
  ├── proxy # proxy URL (optional)
338
347
  ├── version # pinned Claude Code version
339
- ├── type # local / container
340
348
  ├── uuid / stable_id # isolated identity
341
349
  ├── hostname / mac_address / machine_id
342
350
  └── client_cert.pem # mTLS cert
@@ -358,8 +366,12 @@ Proxy formats: `ip:port:user:pass` (SOCKS5), `ss://...`, `vmess://...`, `vless:/
358
366
 
359
367
  ### Notes
360
368
 
369
+ > **Proxy tool conflicts**: If you have Clash, Shadowrocket, Surge, sing-box or other proxy/VPN tools running locally, turn them off before using cac. TUN-mode compatibility is still experimental. Even if a conflict occurs, cac will fail-closed — **your real IP is never exposed**.
370
+
361
371
  - **First login**: Run `claude`, then type `/login`. Health check is automatically bypassed.
362
- - **TUN conflicts**: Use `cac relay on` or add DIRECT rule in your TUN software.
372
+ - **Verify your setup**: Run `cac env check` anytime. Use `which claude` to confirm you're using the cac-managed wrapper.
373
+ - **Automatic safety checks**: Every new Claude Code session runs a quick cac check. If anything is wrong, the session is terminated before any data is sent.
374
+ - **Network resilience**: Traffic is strictly routed through your proxy. If the proxy drops, traffic stops entirely — no fallback to direct connection.
363
375
  - **IPv6**: Recommend disabling system-wide to prevent real address exposure.
364
376
 
365
377
  ---