← GreptileCONTENT HISTORY

Update to Greptile

Snapshot Oct 28, 2026 · 12:24 UTC · version 1.3.1

WHAT CHANGED

Package or technical metadata updated

Package or technical metadata updated

Observed in package metadata. These changes alone do not establish a new customer-facing feature.

Save Greptile and check future changes in Following.

Up to 3 plugins free · no card required.

All fields and original values.

These are saved file metadata. Open a changed file to read its text edits.

Package file

Before

Sep 30, 2026 · 23:20 UTC

02ab16e3545d694f2f4346261b3c58e31c4d630a1cc79483c44b60af3fc86921

After

Oct 28, 2026 · 12:24 UTC

95be80bc3d5b478bc43b3201359d0087168ebd37b9b4ac61635404b8d44f2c48

Package file

Before

Sep 30, 2026 · 23:20 UTC

127

After

Oct 28, 2026 · 12:24 UTC

100

Package file

Before

Sep 30, 2026 · 23:20 UTC

a28b3f48ee5821ad815c391e721ba009a8141ffdd04dc09976a7f47d3d5e25fc

After

Oct 28, 2026 · 12:24 UTC

a694251b24eaf86adc11c7a67d786439cf7203ea3db860fef352d68e981c6a6e

Package file

Before

Sep 30, 2026 · 23:20 UTC

1262

After

Oct 28, 2026 · 12:24 UTC

1693

Compare saved observations

Download comparison JSON

README.md

− removed · + added

--- before
+++ after
@@ -0,0 +1,150 @@
+# Greptile
+
+[Greptile](https://greptile.com) is an AI code review agent for GitHub and GitLab that automatically reviews pull requests. This plugin gives Claude Code and Codex two ways to work with it:
+
+- the **Greptile MCP server**, for reading and resolving review results, and for searching your organization's knowledge base and coding patterns
+- the **Greptile CLI**, for dispatching a review of your working branch before a pull request exists
+
+They are two ends of one pipeline. The CLI dispatches reviews; the MCP server reads them back — both the ones the CLI dispatched (`source: "headless"`) and the ones Greptile ran on your pull requests (`source: "pr"`).
+
+## Setup
+
+Nothing to install and no API key to create.
+
+**MCP server.** Open the `/mcp` menu and authenticate **greptile**. Your browser opens [auth.greptile.com](https://auth.greptile.com); sign in and approve access. Claude Code stores and refreshes the tokens. In Codex, connect it from the plugin settings.
+
+**CLI.** Run `/greptile:login` once and sign in through the same OAuth provider. The CLI ships with this plugin, so there is no npm or Homebrew install to do — but it is a Node program, so Node must be on your machine. In Codex, ask it to sign in with the plugin's `login` skill.
+
+The two sign-ins are separate: same Greptile account, same OAuth provider, but the CLI keeps its own credentials in `~/.greptile/auth.json` while Claude Code keeps the MCP tokens in its own store. Use whichever surface you need; you only have to sign in to that one.
+
+## Commands
+
+- `/greptile:review` - Review the current branch against its base. Accepts a base branch and free-text instructions ("focus on the auth changes").
+- `/greptile:login` - Sign the CLI in to your Greptile account.
+
+In Codex, these are the `review` and `login` skills.
+
+## Tools
+
+### Account and repositories
+- `get_me` - Identify your account and available organizations
+- `list_repositories` - Discover accessible repositories and identifiers for the other tools
+
+### Pull requests
+- `list_merge_requests` / `list_pull_requests` - List PRs, filtered by repository, branch, author, or state
+- `get_merge_request` - Detailed PR info, including stored addressed flags and commits since the latest review comment
+- `list_merge_request_comments` - All comments on a PR, with Greptile comments identified by `isGreptileComment`
+
+### Code reviews
+- `list_code_reviews` - List code reviews, filtered by repository or status
+- `get_code_review` - Full review body, status, summary citations, and review metadata
+- `trigger_code_review` - Start a Greptile review on a pull request (GitHub and GitLab)
+- `search_greptile_comments` - Search Greptile's review comments across every review, on pull requests and on headless CLI runs alike
+
+### Knowledge base
+- `list_knowledge_bases` - Repositories your organization has knowledge base data for
+- `list_knowledge_base_documents` - Document paths in a repository's published knowledge base
+- `get_knowledge_base_document` - Markdown body of a single knowledge base document
+- `search_knowledge_base` - Substring search across one repository's knowledge base
+
+### Custom context
+- `list_custom_context` - Your organization's coding patterns and rules
+- `get_custom_context` - Details for one entry and linked comment references
+- `search_custom_context` - Search entries by content
+- `create_custom_context` - Create a new entry, either a custom instruction (the default) or a pattern
+
+### Analytics
+- `get_analytics_overview` - Summary metrics and period changes, chart series, and repository, contributor, and pull request rankings
+- `list_analytics_findings` - Findings with severity and security totals and trends, filterable by team, repository, author, severity, or status
+- `list_analytics_filter_options` - The teams, repositories, and authors available to you as analytics filters
+
+## Example usage
+
+- "Review my current branch with Greptile and fix what it finds"
+- "Show me Greptile's comments on my current PR and help me resolve them"
+- "What issues did Greptile find on PR #123?"
+- "Search our knowledge base for how authentication works in this repo"
+
+## Bundled CLI
+
+`scripts/greptile.mjs` is the Greptile CLI, vendored from the published npm package
+`greptile` (its `dist/greptile.js`, renamed only so Node reads it as ESM without a
+sibling `package.json`). `scripts/greptile.version` records which release it is, and
+CI verifies the file byte-for-byte against that version's npm tarball, so the copy
+running here is the same one npm serves.
+
+Because the CLI ships with the plugin, it updates with the plugin — not through
+`greptile update`, `npm`, or `brew`. Any separate `greptile` you have installed is
+untouched and unused by these commands, though both share your login at
+`~/.greptile/auth.json`.
+
+## Network access
+
+This plugin registers no hooks. What it contacts:
+
+- `api.greptile.com` — the MCP server, the CLI's API, and CLI telemetry
+  (below).
+- `auth.greptile.com` — OAuth sign-in, for both surfaces.
+- `app.greptile.com` — link targets printed in review output.
+- `127.0.0.1` — a loopback listener the CLI opens to receive the OAuth
+  callback during `/greptile:login`, closed as soon as the redirect arrives.
+
+### Telemetry
+
+The bundled CLI reports anonymous usage events to `/v1/telemetry` on the same
+host as its API. The events are lifecycle signals — `cli_first_run`,
+`cli_login_started`, `cli_login_failed`, `cli_onboarding_started`,
+`cli_skill_installed`, `cli_skill_updated`, `cli_review_blocked`,
+`cli_update_completed` — carrying your install method, OS, architecture,
+whether the run was interactive, and which agent surface it ran under. Nothing
+else: no code, no repository or branch names, no file paths, no review content.
+Event-specific fields are fixed values: `method`, `exit_code`, `reason`, the
+version strings on an update, and the name of the Greptile-authored skill on
+the two skill events.
+
+Inside Claude Code and Codex the CLI is always non-interactive, so it cannot ask you to
+decide and does not try. It falls back to **anonymous mode**: a random
+`cli:<uuid>` stored in `telemetry.json`, no account token attached, and no
+profile built on the other end. If you have separately opted in from a
+standalone `greptile` on the same machine, that decision carries over here and
+events are sent under your account instead.
+
+To turn it off, any one of these is enough:
+
+```sh
+export GREPTILE_TELEMETRY_DISABLED=1   # or DO_NOT_TRACK=1
+greptile settings set telemetry false  # standalone CLI
+node "<plugin-root>/scripts/greptile.mjs" settings set telemetry false  # bundled CLI
+```
+
+`CI=1` also disables it, and a CLI pointed at a self-hosted Greptile sends no
+telemetry at all.
+
+### Downloads
+
+One thing here fetches software, and this is it. When a review summary
+contains a Mermaid diagram, the CLI renders it with
+`mmdr`, a small standalone binary fetched on first use from
+[github.com/1jehuang/mermaid-rs-renderer](https://github.com/1jehuang/mermaid-rs-renderer)
+into `~/.cache/greptile/bin/`. The archive is checked against a SHA-256 pinned
+per platform inside the bundle and is deleted rather than run if the hash does
+not match; the download announces itself on stderr, and failing to get it
+degrades the diagram to a link instead of failing the review. Setting
+`GREPTILE_NO_AUTO_INSTALL=1` skips it. **`/greptile:review` already sets that
+variable**, so the plugin does not download it — the code path is reachable
+only if you invoke the bundled CLI yourself without it.
+
+## Packaging for the OpenAI directory
+
+The OpenAI directory takes a ZIP of the plugin. From the repository root, package a committed revision, including the bundled CLI, without repository-only files:
+
+```sh
+git archive --format=zip --output=/tmp/greptile-plugin.zip HEAD:plugins/greptile -- .codex-plugin/plugin.json .mcp.json assets scripts skills LICENSE README.md
+```
+
+`.codex-plugin/chatgpt-app-submission.json` holds the tool justifications and
+test cases for the submission form.
+
+## Documentation
+
+See [greptile.com/docs/mcp-v2/overview](https://www.greptile.com/docs/mcp-v2/overview).
Full technical diff · 19 changed fields

changed /files/.app.json/sha256

BEFORE
"02ab16e3545d694f2f4346261b3c58e31c4d630a1cc79483c44b60af3fc86921"
AFTER
"95be80bc3d5b478bc43b3201359d0087168ebd37b9b4ac61635404b8d44f2c48"

changed /files/.app.json/size

BEFORE
127
AFTER
100

changed /files/.codex-plugin~1plugin.json/sha256

BEFORE
"a28b3f48ee5821ad815c391e721ba009a8141ffdd04dc09976a7f47d3d5e25fc"
AFTER
"a694251b24eaf86adc11c7a67d786439cf7203ea3db860fef352d68e981c6a6e"

changed /files/.codex-plugin~1plugin.json/size

BEFORE
1262
AFTER
1693

added /files/.mcp.json

BEFORE
Field was absent
AFTER
{
  "sha256": "bb8328540a1c3fd386eb37bc89f2617257c6cd94a752efccb7fecd46aa8d0683",
  "size": 116
}

added /files/LICENSE

BEFORE
Field was absent
AFTER
{
  "sha256": "b5005f09527f9533812a206cefe6ff5f71e5cdc0ae644750a3b1c71901c89ddd",
  "size": 1068
}

added /files/README.md

BEFORE
Field was absent
AFTER
{
  "sha256": "4d6970cdf4ed300c042fda09037dca10682e3d85dfebd855cdea16bc33ae5aa1",
  "size": 8122
}

added /files/assets~1icon.svg

BEFORE
Field was absent
AFTER
{
  "sha256": "f4d5a9da8d2645acad160ea4afe469acf6d851ed3cd471ea21b59342e96b80f0",
  "size": 651
}

added /files/assets~1logo.svg

BEFORE
Field was absent
AFTER
{
  "sha256": "f4d5a9da8d2645acad160ea4afe469acf6d851ed3cd471ea21b59342e96b80f0",
  "size": 651
}

added /files/scripts~1greptile.mjs

BEFORE
Field was absent
AFTER
{
  "sha256": "7cb36450be2a39ec0d53f463c80bc82ae170899582ff75c81f219b8535d173d9",
  "size": 10713594
}

added /files/scripts~1greptile.version

BEFORE
Field was absent
AFTER
{
  "sha256": "88206afd2d9b56ca71466c85d1ed1421b1db0e78fa00072697918fb8a9ac54ef",
  "size": 6
}

changed /files/skills~1login~1SKILL.md/sha256

BEFORE
"a53c662057b4b4eb120176d10180061dabbe192999012be70ef7618a8124c9c2"
AFTER
"3363de3784750d5f82ead3f001b897f73f5ab25a0d25ea860ab380bd301e3d0a"

changed /files/skills~1login~1SKILL.md/size

BEFORE
1021
AFTER
1278

removed /files/skills~1login~1scripts~1greptile.mjs

BEFORE
{
  "sha256": "f5fac84b4c5d8a68d6419f543008d076f7e3b5066a424cb0c1aa77c458080275",
  "size": 10697706
}
AFTER
Field is absent

removed /files/skills~1login~1scripts~1greptile.version

BEFORE
{
  "sha256": "36e68867ce939b2464649670eb1b3f9759d1a99e7326dac3c79d0942e01f5d65",
  "size": 6
}
AFTER
Field is absent

changed /files/skills~1review~1SKILL.md/sha256

BEFORE
"241ba94b3d946d1e80ac0741c47552e12d91cd625ddd56143e05cc01c27f91b4"
AFTER
"37667d1b5cdbf1660b817601e0f6576fb5c43e090df6a51f93676b3e58072b17"

changed /files/skills~1review~1SKILL.md/size

BEFORE
1818
AFTER
3335

removed /files/skills~1review~1scripts~1greptile.mjs

BEFORE
{
  "sha256": "f5fac84b4c5d8a68d6419f543008d076f7e3b5066a424cb0c1aa77c458080275",
  "size": 10697706
}
AFTER
Field is absent

removed /files/skills~1review~1scripts~1greptile.version

BEFORE
{
  "sha256": "36e68867ce939b2464649670eb1b3f9759d1a99e7326dac3c79d0942e01f5d65",
  "size": 6
}
AFTER
Field is absent
Full snapshot data
{
  "files": {
    ".app.json": {
      "sha256": "95be80bc3d5b478bc43b3201359d0087168ebd37b9b4ac61635404b8d44f2c48",
      "size": 100
    },
    ".codex-plugin/plugin.json": {
      "sha256": "a694251b24eaf86adc11c7a67d786439cf7203ea3db860fef352d68e981c6a6e",
      "size": 1693
    },
    ".mcp.json": {
      "sha256": "bb8328540a1c3fd386eb37bc89f2617257c6cd94a752efccb7fecd46aa8d0683",
      "size": 116
    },
    "LICENSE": {
      "sha256": "b5005f09527f9533812a206cefe6ff5f71e5cdc0ae644750a3b1c71901c89ddd",
      "size": 1068
    },
    "README.md": {
      "sha256": "4d6970cdf4ed300c042fda09037dca10682e3d85dfebd855cdea16bc33ae5aa1",
      "size": 8122
    },
    "assets/icon.svg": {
      "sha256": "f4d5a9da8d2645acad160ea4afe469acf6d851ed3cd471ea21b59342e96b80f0",
      "size": 651
    },
    "assets/logo.svg": {
      "sha256": "f4d5a9da8d2645acad160ea4afe469acf6d851ed3cd471ea21b59342e96b80f0",
      "size": 651
    },
    "scripts/greptile.mjs": {
      "sha256": "7cb36450be2a39ec0d53f463c80bc82ae170899582ff75c81f219b8535d173d9",
      "size": 10713594
    },
    "scripts/greptile.version": {
      "sha256": "88206afd2d9b56ca71466c85d1ed1421b1db0e78fa00072697918fb8a9ac54ef",
      "size": 6
    },
    "skills/login/SKILL.md": {
      "sha256": "3363de3784750d5f82ead3f001b897f73f5ab25a0d25ea860ab380bd301e3d0a",
      "size": 1278
    },
    "skills/review/SKILL.md": {
      "sha256": "37667d1b5cdbf1660b817601e0f6576fb5c43e090df6a51f93676b3e58072b17",
      "size": 3335
    }
  }
}

SHA-256 of public snapshot: e5705e40e124753d6dd770cc508c4cc2914e9b7e1ee2bb9acf848e5f947c8a01