greptile 3.5.3 → 3.5.4
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/CHANGELOG.md +36 -0
- package/README.md +166 -34
- package/dist/greptile.js +355 -349
- package/package.json +1 -1
- package/settings-schema.json +11 -11
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,42 @@ All notable changes to the Greptile CLI.
|
|
|
4
4
|
|
|
5
5
|
## Unreleased
|
|
6
6
|
|
|
7
|
+
## 3.5.4 - 2026-09-21
|
|
8
|
+
|
|
9
|
+
### Changed
|
|
10
|
+
|
|
11
|
+
- Review summaries now lead with confidence and a concise safety assessment,
|
|
12
|
+
followed by the generated summary and any supplied instructions. Reviews
|
|
13
|
+
with no findings also show up to seven "What we checked" items when available.
|
|
14
|
+
Terminal and plain-text output omit the separate security-summary section;
|
|
15
|
+
JSON output retains `securitySummary` and the full `confidenceReasoning`.
|
|
16
|
+
- Organization review settings now follow the active SCM summary layout.
|
|
17
|
+
For the new layout, the editor and settings list label the issues section
|
|
18
|
+
"Findings" and hide collapse/open controls for findings and confidence.
|
|
19
|
+
Legacy servers retain the existing controls, and the setting keys still work
|
|
20
|
+
with `get`, `set`, and `unset`.
|
|
21
|
+
- `greptile review` no longer refuses reviews that touch more than 500 files;
|
|
22
|
+
the remaining preflight limits (50 `.greptile` config files, payload size)
|
|
23
|
+
are unchanged.
|
|
24
|
+
- Help text and descriptions for authentication, `init`, `config`, `settings`,
|
|
25
|
+
`review`, `skills`, `update`, and Fix bridge commands now spell out
|
|
26
|
+
accepted inputs, produced outputs, and how to follow up on a review.
|
|
27
|
+
- `greptile update` recognises a bundle vendored by the Codex plugin as well
|
|
28
|
+
as the Claude Code plugin and points you at the plugin's own update path
|
|
29
|
+
instead of trying to upgrade in place.
|
|
30
|
+
|
|
31
|
+
### Fixed
|
|
32
|
+
|
|
33
|
+
- Both comment and diff layouts keep the review summary and diagram above
|
|
34
|
+
findings, using the same summary layout.
|
|
35
|
+
- Usage telemetry now reports `cli_command_completed` (command name,
|
|
36
|
+
duration, exit code) and `cli_transport_error` (failure kind and count
|
|
37
|
+
only) events, batched during execution, so failed and invalid invocations
|
|
38
|
+
are counted. A failing first run still does not enable anonymous telemetry
|
|
39
|
+
or print its disclosure. The README documents the new events and the
|
|
40
|
+
distinction from service-side API records. The final telemetry flush waits
|
|
41
|
+
at most 100 ms, reduced from 400 ms.
|
|
42
|
+
|
|
7
43
|
## 3.5.3 - 2026-09-18
|
|
8
44
|
|
|
9
45
|
### Changed
|
package/README.md
CHANGED
|
@@ -47,28 +47,39 @@ Comments appear in the terminal as they come in.
|
|
|
47
47
|
|
|
48
48
|
## Commands
|
|
49
49
|
|
|
50
|
-
| Command | What it does
|
|
51
|
-
| --------------------------- |
|
|
52
|
-
| `greptile review` | Review the
|
|
53
|
-
| `greptile review show [ID]` |
|
|
54
|
-
| `greptile review status` | Report the
|
|
55
|
-
| `greptile
|
|
56
|
-
| `greptile
|
|
57
|
-
| `greptile
|
|
58
|
-
| `greptile
|
|
59
|
-
| `greptile
|
|
60
|
-
| `greptile
|
|
61
|
-
| `greptile
|
|
62
|
-
| `greptile
|
|
63
|
-
|
|
64
|
-
|
|
50
|
+
| Command | What it does |
|
|
51
|
+
| --------------------------- | ------------------------------------------------------------------------ |
|
|
52
|
+
| `greptile review` | Review committed changes from the branch merge base through `HEAD`. |
|
|
53
|
+
| `greptile review show [ID]` | Fetch one review by UUID, or choose/list recent local history. |
|
|
54
|
+
| `greptile review status` | Report the latest saved review for a commit with scriptable exits. |
|
|
55
|
+
| `greptile config [PATH]` | Resolve the review config for the repository or one file. |
|
|
56
|
+
| `greptile init` | Enable the current repository with an OAuth-signed-in admin account. |
|
|
57
|
+
| `greptile login` | Sign in through your browser, or with `--api-key`. |
|
|
58
|
+
| `greptile logout` | Remove stored credentials. |
|
|
59
|
+
| `greptile whoami` | Show who you are signed in as and your organizations. |
|
|
60
|
+
| `greptile settings` | Manage local preferences, organization review settings, repos, and team. |
|
|
61
|
+
| `greptile skills` | List, install, and update Greptile-authored agent skills. |
|
|
62
|
+
| `greptile fix` | Set up or remove Fix in Claude Code on macOS. |
|
|
63
|
+
| `greptile update` | Update the CLI to the latest version. |
|
|
64
|
+
|
|
65
|
+
Run any command with `--help` for its installed flag list. This README documents the unreleased CLI 3.5.4;
|
|
66
|
+
the installed help wins if it differs.
|
|
65
67
|
|
|
66
68
|
## Reviewing
|
|
67
69
|
|
|
68
|
-
|
|
70
|
+
`greptile review` compares the merge base of the selected base and `HEAD` with `HEAD`. It sends
|
|
71
|
+
committed, non-binary changes only. Uncommitted and binary files stay local and produce warnings.
|
|
72
|
+
|
|
73
|
+
Terminal output starts with a box containing confidence, a short verdict, and the change summary.
|
|
74
|
+
Clean reviews include a list of available checks. Any diagram follows the box, before findings
|
|
75
|
+
and diffs. Plain text output omits the box. JSON output keeps the full `confidenceReasoning`
|
|
76
|
+
and `securitySummary` fields.
|
|
77
|
+
|
|
78
|
+
Review against a specific base branch or add one-run instructions:
|
|
69
79
|
|
|
70
80
|
```sh
|
|
71
81
|
greptile review -b main
|
|
82
|
+
greptile review --instructions "focus on retry cancellation"
|
|
72
83
|
```
|
|
73
84
|
|
|
74
85
|
Show findings beside the changed code instead of as a comment list:
|
|
@@ -87,7 +98,7 @@ Reopen an earlier review:
|
|
|
87
98
|
|
|
88
99
|
```sh
|
|
89
100
|
greptile review show # pick from recent reviews
|
|
90
|
-
greptile review show
|
|
101
|
+
greptile review show b3e4f72a-1d6c-4f81-9c0e-2a7d3b9e5f10
|
|
91
102
|
```
|
|
92
103
|
|
|
93
104
|
List recent reviews non-interactively (for scripts and agents):
|
|
@@ -101,7 +112,7 @@ Check whether the current commit has been reviewed (for a pre-push hook):
|
|
|
101
112
|
|
|
102
113
|
```sh
|
|
103
114
|
greptile review status # checks HEAD
|
|
104
|
-
greptile review status --commit
|
|
115
|
+
greptile review status --commit 9f2c6a43d99b9de72f4f7853b4d4cb650ed451b8
|
|
105
116
|
greptile review status --json
|
|
106
117
|
```
|
|
107
118
|
|
|
@@ -121,10 +132,48 @@ esac
|
|
|
121
132
|
|
|
122
133
|
```sh
|
|
123
134
|
greptile review --json > review.json # structured JSON
|
|
124
|
-
greptile review --text # plain text
|
|
125
|
-
greptile review --agent #
|
|
135
|
+
greptile review --text # force plain text, overriding saved output mode
|
|
136
|
+
greptile review --agent # plain text, without interactive sign-in or setup
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
A completed review prints one JSON object. This fictional example uses the exact emitted fields:
|
|
140
|
+
|
|
141
|
+
```json
|
|
142
|
+
{
|
|
143
|
+
"summary": "The retry path now preserves cancellation.",
|
|
144
|
+
"confidence": 4,
|
|
145
|
+
"confidenceReasoning": "The change is focused, with one cleanup suggestion.",
|
|
146
|
+
"securitySummary": null,
|
|
147
|
+
"instructions": "focus on retry cancellation",
|
|
148
|
+
"comments": [
|
|
149
|
+
{
|
|
150
|
+
"id": "comment-7312",
|
|
151
|
+
"path": "src/retry.ts",
|
|
152
|
+
"startLine": 42,
|
|
153
|
+
"endLine": 42,
|
|
154
|
+
"side": "new",
|
|
155
|
+
"severity": "P2",
|
|
156
|
+
"securityIssue": false,
|
|
157
|
+
"category": "comment",
|
|
158
|
+
"body": "Clear the timer after the request settles.",
|
|
159
|
+
"verifiedEvidence": null,
|
|
160
|
+
"suggestion": "clearTimeout(timer)",
|
|
161
|
+
"hunk": {
|
|
162
|
+
"header": "@@ -39,6 +39,7 @@ async function retry() {",
|
|
163
|
+
"oldRange": { "start": 39, "lines": 6 },
|
|
164
|
+
"newRange": { "start": 39, "lines": 7 },
|
|
165
|
+
"before": "return result",
|
|
166
|
+
"after": "clearTimeout(timer)"
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
]
|
|
170
|
+
}
|
|
126
171
|
```
|
|
127
172
|
|
|
173
|
+
`comments` is empty on a review with no findings. A successful review exits `0` even when it has
|
|
174
|
+
findings. After a dispatched review is interrupted or cannot finish locally, stderr gives its UUID
|
|
175
|
+
and the follow-up command `greptile review show <UUID>`.
|
|
176
|
+
|
|
128
177
|
Exit codes are stable for scripting; see [Reference](#reference).
|
|
129
178
|
|
|
130
179
|
> ℹ️ **Note:** `greptile review show` with no ID now prints the recent-reviews
|
|
@@ -160,6 +209,10 @@ When `GREPTILE_API_KEY` is set, it takes precedence over a stored sign-in.
|
|
|
160
209
|
|
|
161
210
|
> ℹ️ **Note:** API keys are scoped to an organization, not a person, so reviews run under the organization's identity. Use OAuth sign-in if you want per-developer attribution.
|
|
162
211
|
|
|
212
|
+
`greptile init` and the organization-management surfaces use account OAuth. They reject API-key
|
|
213
|
+
authentication because repository and organization changes must be attributed to a signed-in user.
|
|
214
|
+
Run `greptile login` first, or make those changes in the dashboard.
|
|
215
|
+
|
|
163
216
|
## Sensitive files
|
|
164
217
|
|
|
165
218
|
Before sending anything, `greptile review` holds back changed files that look like they contain secrets, so a mistakenly committed `.env` file or private key stays on your machine. When files are held back, the review prints a one-line note naming them. A file is held back when:
|
|
@@ -217,11 +270,43 @@ greptile settings unset review.layout # back to the default
|
|
|
217
270
|
| `review.context` | `0` to `60` (default `15`) | `--context` |
|
|
218
271
|
| `review.width` | `40` to `240` (default: terminal width) | `--width` |
|
|
219
272
|
| `telemetry` | `true`, `false` (unset until you decide) | — (see [Telemetry](#telemetry)) |
|
|
273
|
+
| `apiBaseUrl` | HTTPS origin, with no path | Self-hosted API target |
|
|
274
|
+
| `webBaseUrl` | HTTPS origin, with no path | Self-hosted dashboard target |
|
|
220
275
|
|
|
221
276
|
A flag passed on the command line always wins over a saved setting for that run.
|
|
222
277
|
|
|
223
278
|
Settings live in `~/.config/greptile/settings.json` (or `$XDG_CONFIG_HOME/greptile/settings.json`); `greptile settings path` prints the exact location. The file includes a `$schema` reference to a published JSON Schema, so editors can validate and autocomplete it if you edit it by hand.
|
|
224
279
|
|
|
280
|
+
The settings file contains preferences and deployment origins, never credentials. OAuth and stored
|
|
281
|
+
API-key credentials live separately in `~/.greptile/auth.json`; do not print or copy that file.
|
|
282
|
+
|
|
283
|
+
Organization review settings use `org.*` keys and are stored on the server. Pass `--org <slug-or-id>`
|
|
284
|
+
when you administer more than one organization; with exactly one eligible organization it is selected
|
|
285
|
+
automatically. For example:
|
|
286
|
+
|
|
287
|
+
```sh
|
|
288
|
+
greptile settings list --org acme-platform --json
|
|
289
|
+
greptile settings get org.review.strictness --org acme-platform --json
|
|
290
|
+
greptile settings set org.review.triggerOnUpdates true --org acme-platform
|
|
291
|
+
greptile settings unset org.review.strictness --org acme-platform
|
|
292
|
+
```
|
|
293
|
+
|
|
294
|
+
`unset` removes a local key, but for an `org.*` key it writes the documented server default. The
|
|
295
|
+
organization keys cover review strictness, update reviews, PR-description updates, Fix with AI buttons,
|
|
296
|
+
coding-agent buttons, and each PR-summary section's inclusion, collapsibility, and initial state. Run
|
|
297
|
+
`greptile settings --help` for the installed key list.
|
|
298
|
+
|
|
299
|
+
Member operations are server-backed and available to every organization member where the server
|
|
300
|
+
allows the action. Listing a roster is member-readable; pending invitations are shown only to admins.
|
|
301
|
+
Members may invite the `member` role, while inviting admins and revoking invitations require admin
|
|
302
|
+
permission.
|
|
303
|
+
|
|
304
|
+
```sh
|
|
305
|
+
greptile settings members list --org acme-platform --json
|
|
306
|
+
greptile settings members invite dev@example.com --role member --org acme-platform
|
|
307
|
+
greptile settings members revoke dev@example.com --org acme-platform
|
|
308
|
+
```
|
|
309
|
+
|
|
225
310
|
## Agent skills
|
|
226
311
|
|
|
227
312
|
Skills are instructions AI coding agents read. Greptile provides two for the CLI:
|
|
@@ -240,6 +325,7 @@ greptile skills install --global # all your projects, no prompt
|
|
|
240
325
|
greptile skills install greploop # just one
|
|
241
326
|
greptile skills install --force # replace installed copies
|
|
242
327
|
greptile skills update # update installed copies
|
|
328
|
+
greptile skills update --json # report updated, current, incompatible, and retired entries
|
|
243
329
|
```
|
|
244
330
|
|
|
245
331
|
Skills are written to `.agents/skills/<name>/`, which Codex, Cursor, Gemini CLI, Copilot and other
|
|
@@ -252,6 +338,8 @@ are available. Run `greptile skills update` to apply them.
|
|
|
252
338
|
|
|
253
339
|
An installed skill is left alone unless you pass `--force`, so local edits are kept. A skill left
|
|
254
340
|
incomplete by a failed write is repaired on the next install. Updates replace stale installed files.
|
|
341
|
+
Bare `greptile skills` is the same as `greptile skills list`: it reports installed copies from the
|
|
342
|
+
current project root and your home directory; it does not fetch the catalog.
|
|
255
343
|
|
|
256
344
|
## Diagrams
|
|
257
345
|
|
|
@@ -295,12 +383,22 @@ greptile reports anonymous usage events to help us see which commands people
|
|
|
295
383
|
run and where they get stuck. The events are lifecycle signals —
|
|
296
384
|
`cli_first_run`, `cli_login_started`, `cli_login_failed`,
|
|
297
385
|
`cli_onboarding_started`, `cli_skill_installed`, `cli_skill_updated`,
|
|
298
|
-
`cli_review_blocked`, `cli_update_completed`
|
|
386
|
+
`cli_review_blocked`, `cli_update_completed`, `cli_command_completed`, and
|
|
387
|
+
`cli_transport_error` — carrying how you installed the
|
|
299
388
|
CLI, your OS and architecture, whether the run was interactive, and which agent
|
|
300
389
|
surface it ran under if any. Never your code, repository or branch names, file
|
|
301
390
|
paths, or review content. Event-specific fields are fixed values: `method`,
|
|
302
391
|
`exit_code`, `reason`, the version strings on an update, and the name of the
|
|
303
392
|
Greptile-authored skill on `cli_skill_installed` and `cli_skill_updated`.
|
|
393
|
+
Command completion includes the registered command name, duration in milliseconds,
|
|
394
|
+
and exit code, including invalid input and failed commands when telemetry is
|
|
395
|
+
already eligible. A fresh nonzero exit does not initialize anonymous
|
|
396
|
+
telemetry or append its disclosure to stderr; that failure is omitted until a
|
|
397
|
+
prior opt-in, notice, or normal workflow makes telemetry eligible. Help, version,
|
|
398
|
+
and internal helpers are excluded. Transport failures include only their kind and
|
|
399
|
+
count for that command: network, TLS, timeout, cancellation, or an oversized
|
|
400
|
+
response. They never include URLs, error messages, arguments, or credentials.
|
|
401
|
+
Events are batched during execution; the final network flush waits at most 100 ms.
|
|
304
402
|
|
|
305
403
|
There are two tiers, and they are treated differently:
|
|
306
404
|
|
|
@@ -314,9 +412,9 @@ Until you answer that prompt, greptile stays anonymous — including in runs tha
|
|
|
314
412
|
cannot show it at all, such as every run inside an AI coding agent. Once you
|
|
315
413
|
have answered, your answer is what applies: accept, and later agent and script
|
|
316
414
|
runs are account-linked too, because the decision is yours and not the
|
|
317
|
-
terminal's. Declining silences both tiers
|
|
415
|
+
terminal's. Declining silences both tiers of client-generated usage events.
|
|
318
416
|
|
|
319
|
-
Any one of these turns
|
|
417
|
+
Any one of these turns off client-generated usage events:
|
|
320
418
|
|
|
321
419
|
```sh
|
|
322
420
|
greptile settings set telemetry false # persistent
|
|
@@ -324,8 +422,13 @@ export GREPTILE_TELEMETRY_DISABLED=1 # this shell
|
|
|
324
422
|
export DO_NOT_TRACK=1 # this shell, and every tool that honors it
|
|
325
423
|
```
|
|
326
424
|
|
|
327
|
-
|
|
328
|
-
|
|
425
|
+
Client-generated usage events are also off automatically when `CI` is set or
|
|
426
|
+
the CLI points at a self-hosted Greptile.
|
|
427
|
+
|
|
428
|
+
These settings control the client-generated events listed above. Greptile
|
|
429
|
+
separately records service-side API usage and review events. Those records can
|
|
430
|
+
include the authenticated account and organization and are not disabled by the
|
|
431
|
+
CLI's telemetry setting or environment switches.
|
|
329
432
|
|
|
330
433
|
## Reference
|
|
331
434
|
|
|
@@ -334,15 +437,43 @@ self-hosted Greptile sends no telemetry at all.
|
|
|
334
437
|
```sh
|
|
335
438
|
greptile login [--api-key] | logout | whoami
|
|
336
439
|
greptile review [-b BRANCH] [--layout comments|diff | --diff] [--resume] [--include PATH...]
|
|
337
|
-
[--json | --text | --agent] [--context LINES]
|
|
440
|
+
[--instructions TEXT] [--json | --text | --agent] [--context LINES]
|
|
441
|
+
[--width COLUMNS] [--color | --no-color]
|
|
338
442
|
greptile review show [ID] # same output flags as review
|
|
339
443
|
greptile review status [--commit REF] [--json | --text | --agent]
|
|
340
|
-
greptile
|
|
444
|
+
greptile config [PATH] [--json]
|
|
445
|
+
greptile init [--json]
|
|
446
|
+
greptile settings list [--json] [--org [SLUG_OR_ID]]
|
|
447
|
+
greptile settings get KEY [--json] [--org [SLUG_OR_ID]]
|
|
448
|
+
greptile settings set KEY VALUE [--org [SLUG_OR_ID]]
|
|
449
|
+
greptile settings unset KEY [--org [SLUG_OR_ID]]
|
|
450
|
+
greptile settings members [list] [--json] [--org [SLUG_OR_ID]]
|
|
451
|
+
greptile settings members invite EMAIL... [--role member|admin] [--org [SLUG_OR_ID]]
|
|
452
|
+
greptile settings members revoke EMAIL_OR_ID [--org [SLUG_OR_ID]]
|
|
453
|
+
greptile settings path
|
|
341
454
|
greptile skills list [--json] | install [NAME...] [-g] [-f] [--json] | update [--json]
|
|
342
455
|
greptile fix install | status [--json] | uninstall [--remove-mappings]
|
|
343
456
|
greptile update
|
|
344
457
|
```
|
|
345
458
|
|
|
459
|
+
Bare groups have useful defaults: `greptile review` starts a review, non-interactive
|
|
460
|
+
`greptile settings` lists local settings, `greptile settings members` lists the roster, bare
|
|
461
|
+
`greptile skills` lists installed skills, and bare `greptile fix` reports Fix service health.
|
|
462
|
+
|
|
463
|
+
### Compatibility and non-public commands
|
|
464
|
+
|
|
465
|
+
`greptile review run` is a hidden compatibility alias for `greptile review`. `greptile onboard` is
|
|
466
|
+
deprecated and hidden; interactive setup now starts when needed. The hidden `__bridge-open` and
|
|
467
|
+
`__bridge-server` commands are implementation details of Fix in Claude Code and are not user entry
|
|
468
|
+
points.
|
|
469
|
+
|
|
470
|
+
CLI 3.4.1 and later also contain the gated `greptile environment` private beta, registered only
|
|
471
|
+
when `GREPTILE_CVMS_PRIVATE_BETA=true`. It manages repository build environments, setup scripts,
|
|
472
|
+
TREX instructions, secret or visible variables, builds and logs, simulations, invalidation, and
|
|
473
|
+
deletion. Access and server support are required. Run `greptile environment --help` on an enabled
|
|
474
|
+
installation for its authoritative surface; secret values must be supplied by a masked prompt,
|
|
475
|
+
stdin, or dotenv input, never as command arguments. Secret values are never shown again.
|
|
476
|
+
|
|
346
477
|
### Environment variables
|
|
347
478
|
|
|
348
479
|
| Variable | What it does |
|
|
@@ -362,8 +493,8 @@ greptile update
|
|
|
362
493
|
| Code | Meaning |
|
|
363
494
|
| ----- | -------------------------------------------------------------------------------- |
|
|
364
495
|
| `0` | Review finished, or (`review status`) the commit has a completed review. |
|
|
365
|
-
| `1` | Couldn't finish, or (`review status`) no review exists / signed out / no
|
|
366
|
-
| `2` | Invalid invocation
|
|
496
|
+
| `1` | Couldn't finish, or (`review status`) no review exists / signed out / no remote. |
|
|
497
|
+
| `2` | Invalid invocation, flag value, review UUID, path, or commit reference. |
|
|
367
498
|
| `3` | `review status` only: a review for the commit is still running. |
|
|
368
499
|
| `4` | `review status` only: the most recent review failed. |
|
|
369
500
|
| `5` | `review status` only: the most recent review was cancelled. |
|
|
@@ -371,8 +502,9 @@ greptile update
|
|
|
371
502
|
|
|
372
503
|
### Files
|
|
373
504
|
|
|
374
|
-
| Path | Contents
|
|
375
|
-
| ---------------------------------- |
|
|
376
|
-
| `~/.greptile/auth.json` | Credentials (refreshed automatically).
|
|
377
|
-
| `~/.
|
|
378
|
-
| `~/.
|
|
505
|
+
| Path | Contents |
|
|
506
|
+
| ---------------------------------- | ---------------------------------------------------- |
|
|
507
|
+
| `~/.greptile/auth.json` | Credentials (refreshed automatically). |
|
|
508
|
+
| `~/.greptile/reviews.json` | Account- and repository-scoped local review history. |
|
|
509
|
+
| `~/.config/greptile/settings.json` | Saved settings (`greptile settings path`). |
|
|
510
|
+
| `~/.cache/greptile/` | Downloaded diagram renderer. |
|