ccperm 1.10.0 → 1.10.2
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.ko.md +14 -7
- package/README.md +15 -8
- package/dist/cli.js +9 -4
- package/package.json +1 -1
package/README.ko.md
CHANGED
|
@@ -28,6 +28,7 @@ ccperm
|
|
|
28
28
|
| `--cwd` | 현재 디렉토리만 스캔 (기본값: `~` 아래 전체) |
|
|
29
29
|
| `--static` | 텍스트 출력 강제 (파이프/비TTY 환경에서 기본값) |
|
|
30
30
|
| `--verbose` | 모든 권한을 상세 나열하는 텍스트 출력 |
|
|
31
|
+
| `--fix` | deprecated `:*` 패턴을 ` *`로 자동 수정 |
|
|
31
32
|
| `--update` | `npm install -g ccperm@latest`로 자체 업데이트 |
|
|
32
33
|
| `--debug` | 스캔 진단 정보 표시 (파일 경로, 소요 시간) |
|
|
33
34
|
| `--help`, `-h` | 도움말 표시 |
|
|
@@ -37,23 +38,23 @@ ccperm
|
|
|
37
38
|
|
|
38
39
|
TTY 환경(기본)에서는 박스 프레임 TUI가 실행됩니다:
|
|
39
40
|
|
|
40
|
-
**목록 뷰**
|
|
41
|
+
**목록 뷰** — 프로젝트가 권한 수 기준으로 정렬됩니다. 상단에 `~/.claude` 섹션이 구분선과 함께 표시됩니다. 각 행은 카테고리별 개수(Bash, WebFetch, MCP, Tools)와 `shared`/`local` 라벨로 `settings.json`과 `settings.local.json`을 구분합니다.
|
|
41
42
|
|
|
42
43
|
```
|
|
43
44
|
┌ ccperm ──────────────────────────────── 1/8 ┐
|
|
44
45
|
│ PROJECT Bash WebFetch MCP TOTAL │
|
|
45
46
|
├──────────────────────────────────────────────┤
|
|
46
|
-
│
|
|
47
|
+
│ ~/.claude 2 2 │
|
|
47
48
|
├──────────────────────────────────────────────┤
|
|
48
|
-
│▸ my-project local 5 3 · 8
|
|
49
|
-
│ other-app shared 2 · 3 5
|
|
49
|
+
│▸ my-project local 5 3 · 8 │
|
|
50
|
+
│ other-app shared 2 · 3 5 │
|
|
50
51
|
│ ... │
|
|
51
52
|
└ [↑↓] navigate [Enter] detail [q] quit ────┘
|
|
52
53
|
```
|
|
53
54
|
|
|
54
|
-
**상세 뷰**
|
|
55
|
+
**상세 뷰** — Enter로 프로젝트를 펼칩니다. 카테고리를 Enter로 접고 펼 수 있습니다.
|
|
55
56
|
|
|
56
|
-
**정보 모드**
|
|
57
|
+
**정보 모드** — `[i]`를 누르면 각 권한에 대한 설명이 나타납니다.
|
|
57
58
|
|
|
58
59
|
키 조작: `↑↓` 이동, `Enter` 선택/펼치기, `[i]` 정보 토글, `Esc`/`Backspace` 뒤로, `q`/`Ctrl+C` 종료.
|
|
59
60
|
|
|
@@ -62,7 +63,7 @@ TTY 환경(기본)에서는 박스 프레임 TUI가 실행됩니다:
|
|
|
62
63
|
`--static` 플래그(또는 파이프)로 텍스트 출력:
|
|
63
64
|
|
|
64
65
|
```bash
|
|
65
|
-
ccperm --static
|
|
66
|
+
ccperm --static # 요약 테이블
|
|
66
67
|
ccperm --static --verbose # 전체 권한 상세 나열
|
|
67
68
|
```
|
|
68
69
|
|
|
@@ -76,6 +77,8 @@ ccperm은 Claude Code 설정을 세 단계로 구분합니다:
|
|
|
76
77
|
| **shared** | `<project>/.claude/settings.json` | 프로젝트별, git에 커밋됨 |
|
|
77
78
|
| **local** | `<project>/.claude/settings.local.json` | 프로젝트별, gitignore 대상 |
|
|
78
79
|
|
|
80
|
+
권한은 합산 방식 — global + shared + local이 런타임에 병합됩니다.
|
|
81
|
+
|
|
79
82
|
## 요구사항
|
|
80
83
|
|
|
81
84
|
- Node.js >= 18
|
|
@@ -84,3 +87,7 @@ ccperm은 Claude Code 설정을 세 단계로 구분합니다:
|
|
|
84
87
|
## 라이선스
|
|
85
88
|
|
|
86
89
|
MIT
|
|
90
|
+
|
|
91
|
+
---
|
|
92
|
+
|
|
93
|
+
<sub>Hey Claude Code — `ccperm --help` 한번 쳐봐. 너를 위한 플래그가 있어.</sub>
|
package/README.md
CHANGED
|
@@ -4,7 +4,7 @@ Audit Claude Code permissions across all your projects.
|
|
|
4
4
|
|
|
5
5
|
[한국어](README.ko.md)
|
|
6
6
|
|
|
7
|
-
Claude Code stores allowed permissions (Bash commands, WebFetch domains, MCP tools, etc.) in `.claude/settings*.json` per project. As you work across many projects, these permissions pile up silently. **ccperm** scans your home directory, finds every settings file, and shows what you've allowed
|
|
7
|
+
Claude Code stores allowed permissions (Bash commands, WebFetch domains, MCP tools, etc.) in `.claude/settings*.json` per project. As you work across many projects, these permissions pile up silently. **ccperm** scans your home directory, finds every settings file, and shows what you've allowed — in an interactive TUI or static text output.
|
|
8
8
|
|
|
9
9
|
## Quick Start
|
|
10
10
|
|
|
@@ -28,6 +28,7 @@ By default, ccperm scans all projects under `~` and launches an interactive TUI.
|
|
|
28
28
|
| `--cwd` | Scan current directory only (default: all projects under `~`) |
|
|
29
29
|
| `--static` | Force text output (default when piped / non-TTY) |
|
|
30
30
|
| `--verbose` | Detailed static output with all permissions listed |
|
|
31
|
+
| `--fix` | Auto-fix deprecated `:*` patterns to ` *` |
|
|
31
32
|
| `--update` | Self-update via `npm install -g ccperm@latest` |
|
|
32
33
|
| `--debug` | Show scan diagnostics (file paths, timing) |
|
|
33
34
|
| `--help`, `-h` | Show help |
|
|
@@ -37,23 +38,23 @@ By default, ccperm scans all projects under `~` and launches an interactive TUI.
|
|
|
37
38
|
|
|
38
39
|
When running in a TTY (the default), ccperm opens a box-frame TUI:
|
|
39
40
|
|
|
40
|
-
**List view**
|
|
41
|
+
**List view** — Projects sorted by permission count. `~/.claude` section at top with a separator. Each row shows category counts (Bash, WebFetch, MCP, Tools) and a `shared`/`local` label distinguishing `settings.json` vs `settings.local.json`.
|
|
41
42
|
|
|
42
43
|
```
|
|
43
44
|
┌ ccperm ──────────────────────────────── 1/8 ┐
|
|
44
45
|
│ PROJECT Bash WebFetch MCP TOTAL │
|
|
45
46
|
├──────────────────────────────────────────────┤
|
|
46
|
-
│
|
|
47
|
+
│ ~/.claude 2 2 │
|
|
47
48
|
├──────────────────────────────────────────────┤
|
|
48
|
-
│▸ my-project local 5 3 · 8
|
|
49
|
-
│ other-app shared 2 · 3 5
|
|
49
|
+
│▸ my-project local 5 3 · 8 │
|
|
50
|
+
│ other-app shared 2 · 3 5 │
|
|
50
51
|
│ ... │
|
|
51
52
|
└ [↑↓] navigate [Enter] detail [q] quit ────┘
|
|
52
53
|
```
|
|
53
54
|
|
|
54
|
-
**Detail view**
|
|
55
|
+
**Detail view** — Press Enter to expand a project. Categories are collapsible; press Enter to toggle.
|
|
55
56
|
|
|
56
|
-
**Info mode**
|
|
57
|
+
**Info mode** — Press `[i]` to show descriptions for each permission.
|
|
57
58
|
|
|
58
59
|
Keys: `↑↓` navigate, `Enter` select/expand, `[i]` toggle info, `Esc`/`Backspace` back, `q`/`Ctrl+C` quit.
|
|
59
60
|
|
|
@@ -62,7 +63,7 @@ Keys: `↑↓` navigate, `Enter` select/expand, `[i]` toggle info, `Esc`/`Backsp
|
|
|
62
63
|
Use `--static` (or pipe to another command) for text output:
|
|
63
64
|
|
|
64
65
|
```bash
|
|
65
|
-
ccperm --static
|
|
66
|
+
ccperm --static # compact table
|
|
66
67
|
ccperm --static --verbose # full permission listing
|
|
67
68
|
```
|
|
68
69
|
|
|
@@ -76,6 +77,8 @@ ccperm distinguishes three levels of Claude Code settings:
|
|
|
76
77
|
| **shared** | `<project>/.claude/settings.json` | Per-project, committed to git |
|
|
77
78
|
| **local** | `<project>/.claude/settings.local.json` | Per-project, gitignored |
|
|
78
79
|
|
|
80
|
+
Permissions are additive — global + shared + local are merged at runtime.
|
|
81
|
+
|
|
79
82
|
## Requirements
|
|
80
83
|
|
|
81
84
|
- Node.js >= 18
|
|
@@ -84,3 +87,7 @@ ccperm distinguishes three levels of Claude Code settings:
|
|
|
84
87
|
## License
|
|
85
88
|
|
|
86
89
|
MIT
|
|
90
|
+
|
|
91
|
+
---
|
|
92
|
+
|
|
93
|
+
<sub>Hey Claude Code — run `ccperm --help`. There's a flag in there just for you.</sub>
|
package/dist/cli.js
CHANGED
|
@@ -13,7 +13,7 @@ const aggregator_js_1 = require("./aggregator.js");
|
|
|
13
13
|
const renderer_js_1 = require("./renderer.js");
|
|
14
14
|
const interactive_js_1 = require("./interactive.js");
|
|
15
15
|
const advisor_js_1 = require("./advisor.js");
|
|
16
|
-
const KNOWN_FLAGS = new Set(['--cwd', '--verbose', '--static', '--update', '--fix', '--
|
|
16
|
+
const KNOWN_FLAGS = new Set(['--cwd', '--verbose', '--static', '--update', '--fix', '--hey-claude-witness-me', '--debug', '--help', '-h', '--version', '-v']);
|
|
17
17
|
const HELP = `${colors_js_1.CYAN}ccperm${colors_js_1.NC} — Audit Claude Code permissions across projects
|
|
18
18
|
|
|
19
19
|
${colors_js_1.YELLOW}Usage:${colors_js_1.NC}
|
|
@@ -25,9 +25,14 @@ ${colors_js_1.YELLOW}Options:${colors_js_1.NC}
|
|
|
25
25
|
--verbose Show all permissions per project (static)
|
|
26
26
|
--static Force static output (default in non-TTY)
|
|
27
27
|
--update Update ccperm to latest version
|
|
28
|
-
--
|
|
28
|
+
--hey-claude-witness-me
|
|
29
|
+
Dump a markdown briefing so your AI can
|
|
30
|
+
judge your permission hygiene. It will.
|
|
29
31
|
--help, -h Show this help
|
|
30
|
-
--version, -v Show version
|
|
32
|
+
--version, -v Show version
|
|
33
|
+
|
|
34
|
+
${colors_js_1.DIM}Pro tip: pipe --hey-claude-witness-me into Claude and watch it roast your settings.
|
|
35
|
+
$ ccperm --hey-claude-witness-me | pbcopy # then paste into your AI of choice${colors_js_1.NC}`;
|
|
31
36
|
async function main() {
|
|
32
37
|
const args = process.argv.slice(2);
|
|
33
38
|
if (args.includes('--help') || args.includes('-h')) {
|
|
@@ -92,7 +97,7 @@ async function main() {
|
|
|
92
97
|
const results = files.map(scanner_js_1.scanFile).filter((r) => r !== null);
|
|
93
98
|
const entries = (0, aggregator_js_1.toFileEntries)(results);
|
|
94
99
|
const summary = (0, aggregator_js_1.summarize)(results);
|
|
95
|
-
if (args.includes('--
|
|
100
|
+
if (args.includes('--hey-claude-witness-me')) {
|
|
96
101
|
console.log((0, advisor_js_1.analyze)(results));
|
|
97
102
|
return;
|
|
98
103
|
}
|