greptile 3.5.2 → 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 CHANGED
@@ -4,6 +4,49 @@ 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
+
43
+ ## 3.5.3 - 2026-09-18
44
+
45
+ ### Changed
46
+
47
+ - Environment review instructions now accept up to 32,000 characters, increased
48
+ from 8,000, when setting or editing them through the CLI.
49
+
7
50
  ## 3.5.2 - 2026-09-04
8
51
 
9
52
  Republishes 3.5.1 for npm. The 3.5.1 npm publish landed during an
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 current branch against its base. |
53
- | `greptile review show [ID]` | Reopen a previous review. Omit the ID to pick from a list. |
54
- | `greptile review status` | Report the most recent review status for a commit (HEAD by default). |
55
- | `greptile init` | Enable Greptile on the current repository when you have admin access. |
56
- | `greptile login` | Sign in through your browser, or with `--api-key`. |
57
- | `greptile logout` | Remove stored credentials. |
58
- | `greptile whoami` | Show who you are signed in as and your organizations. |
59
- | `greptile settings` | Manage CLI preferences, repositories, review settings, and team. |
60
- | `greptile skills` | Install the Greptile agent skills for your AI coding agents. |
61
- | `greptile fix` | Set up or remove Fix in Claude Code on macOS. |
62
- | `greptile update` | Update the CLI to the latest version. |
63
-
64
- Run any command with `--help` for its full flag list.
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
- Review against a specific base branch:
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 abc123 # open one by ID
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 abc123
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 (default when piped)
125
- greptile review --agent # alias for --text, for AI agents
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` — carrying how you installed the
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, not just the linked one.
415
+ terminal's. Declining silences both tiers of client-generated usage events.
318
416
 
319
- Any one of these turns it off:
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
- It is also off automatically when `CI` is set, and a CLI pointed at a
328
- self-hosted Greptile sends no telemetry at all.
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] [--width COLUMNS] [--no-color]
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 settings list | get KEY | set KEY VALUE | unset KEY | path
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 origin. |
366
- | `2` | Invalid invocation (not inside a git repo, unknown flag, unresolvable commit). |
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
- | `~/.config/greptile/settings.json` | Saved settings (`greptile settings path`). |
378
- | `~/.cache/greptile/` | Downloaded diagram renderer. |
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. |