Skip to content

overlane review run

Review a diff (no repository needed) or a pull request now and report the findings

Updated View as MarkdownOpen in ChatGPTOpen in Claude

Runs the review service. The native way is a diff: --diff change.patch, or --diff - (or a pipe) to read it from standard input; it needs no repository and no GitHub account, and it is log-only. A pull request number reviews a pull request instead (native pull requests arrive with Overlane git; a GitHub one needs the GitHub connection and the App’s pull-request access, otherwise the command says the live leg is pending). Deterministic checks (secret scan, static rules, diff validation) run first and alone when no model is available; a model pass is an optional second pass under the per-PR token cap. A pull request run is log-only and posts nothing until comments are switched on (overlane review settings set --mode comments). Diff text and code are data, never instructions.

Usage

overlane review run [pull] [--diff FILE] [--title TEXT] [--label NAME] [--repo OWNER/NAME] [--dry-run]

Arguments

Argument Required Description
pull no A pull request number (omit it to review a diff)

Flags

Flag Type Required Default Description
--diff string no Review this unified diff (a file, or - for standard input); needs no repository
--title string no A title for the diff, shown in the summary
--label string no Names the diff so a re-review of the same change merges its findings (default: patch)
--repo string no For a pull request number: the GitHub repository (default: the origin remote); not used with –diff
--dry-run boolean no Print the requests and file changes this command would make, then stop. Needs no credentials.

Examples

overlane review run --diff change.patch
overlane review run --diff -
overlane review run 7 --repo acme/app --dry-run

Behavior

  • Effect: write (changes local or hosted state).
  • Needs credentials: yes. Uses the network: yes.
  • Supports --dry-run: yes. Accepts --force: no.
  • Machine-readable description: overlane schema review run.

Result

With --json (the default when stdout is not a terminal) the command prints this JSON Schema’s shape on stdout.

{
  "anyOf": [
    {
      "type": "object",
      "properties": {
        "run": {
          "type": "object",
          "properties": {
            "tenantId": {
              "type": "string",
              "minLength": 1,
              "maxLength": 128,
              "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]*$",
              "description": "tenant identifier"
            },
            "id": {
              "type": "string",
              "minLength": 1
            },
            "projectId": {
              "type": "string",
              "minLength": 1,
              "maxLength": 128,
              "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]*$",
              "description": "project identifier"
            },
            "provider": {
              "type": "string",
              "enum": [
                "overlane",
                "github",
                "gitlab"
              ]
            },
            "repository": {
              "type": "string",
              "minLength": 1
            },
            "pullNumber": {
              "type": "integer",
              "exclusiveMinimum": 0,
              "maximum": 9007199254740991
            },
            "headSha": {
              "type": "string",
              "pattern": "^(?:[0-9a-f]{40}|[0-9a-f]{64})$"
            },
            "trigger": {
              "type": "string",
              "enum": [
                "opened",
                "push",
                "manual"
              ]
            },
            "fork": {
              "type": "boolean"
            },
            "mode": {
              "type": "string",
              "enum": [
                "log_only",
                "comments"
              ]
            },
            "status": {
              "type": "string",
              "enum": [
                "completed",
                "partial",
                "failed"
              ]
            },
            "tokensUsed": {
              "type": "integer",
              "minimum": 0,
              "maximum": 9007199254740991
            },
            "tokenCap": {
              "type": "integer",
              "exclusiveMinimum": 0,
              "maximum": 9007199254740991
            },
            "model": {
              "type": "string",
              "minLength": 1
            },
            "posted": {
              "type": "boolean"
            },
            "findings": {
              "type": "object",
              "properties": {
                "open": {
                  "type": "integer",
                  "minimum": 0,
                  "maximum": 9007199254740991
                },
                "fixed": {
                  "type": "integer",
                  "minimum": 0,
                  "maximum": 9007199254740991
                },
                "dismissed": {
                  "type": "integer",
                  "minimum": 0,
                  "maximum": 9007199254740991
                }
              },
              "required": [
                "open",
                "fixed",
                "dismissed"
              ],
              "additionalProperties": false
            },
            "startedAt": {
              "type": "string",
              "format": "date-time",
              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
            },
            "completedAt": {
              "type": "string",
              "format": "date-time",
              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
            }
          },
          "required": [
            "tenantId",
            "id",
            "projectId",
            "provider",
            "repository",
            "pullNumber",
            "headSha",
            "trigger",
            "fork",
            "mode",
            "status",
            "tokensUsed",
            "tokenCap",
            "model",
            "posted",
            "findings",
            "startedAt",
            "completedAt"
          ],
          "additionalProperties": false
        },
        "summary": {
          "type": "object",
          "properties": {
            "tenantId": {
              "type": "string",
              "minLength": 1,
              "maxLength": 128,
              "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]*$",
              "description": "tenant identifier"
            },
            "runId": {
              "type": "string",
              "minLength": 1
            },
            "headSha": {
              "type": "string",
              "pattern": "^(?:[0-9a-f]{40}|[0-9a-f]{64})$"
            },
            "changes": {
              "type": "object",
              "properties": {
                "files": {
                  "type": "integer",
                  "minimum": 0,
                  "maximum": 9007199254740991
                },
                "additions": {
                  "type": "integer",
                  "minimum": 0,
                  "maximum": 9007199254740991
                },
                "deletions": {
                  "type": "integer",
                  "minimum": 0,
                  "maximum": 9007199254740991
                }
              },
              "required": [
                "files",
                "additions",
                "deletions"
              ],
              "additionalProperties": false
            },
            "risks": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "checks": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string",
                    "minLength": 1
                  },
                  "state": {
                    "type": "string",
                    "enum": [
                      "pass",
                      "fail",
                      "pending"
                    ]
                  }
                },
                "required": [
                  "name",
                  "state"
                ],
                "additionalProperties": false
              }
            },
            "counts": {
              "type": "object",
              "properties": {
                "open": {
                  "type": "integer",
                  "minimum": 0,
                  "maximum": 9007199254740991
                },
                "fixed": {
                  "type": "integer",
                  "minimum": 0,
                  "maximum": 9007199254740991
                },
                "dismissed": {
                  "type": "integer",
                  "minimum": 0,
                  "maximum": 9007199254740991
                }
              },
              "required": [
                "open",
                "fixed",
                "dismissed"
              ],
              "additionalProperties": false
            },
            "skipped": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "path": {
                    "type": "string",
                    "minLength": 1
                  },
                  "reason": {
                    "type": "string",
                    "enum": [
                      "generated",
                      "vendored",
                      "lockfile",
                      "minified",
                      "binary",
                      "rule"
                    ]
                  }
                },
                "required": [
                  "path",
                  "reason"
                ],
                "additionalProperties": false
              }
            },
            "notice": {
              "type": "object",
              "properties": {
                "tenantId": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 128,
                  "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]*$",
                  "description": "tenant identifier"
                },
                "cap": {
                  "type": "integer",
                  "exclusiveMinimum": 0,
                  "maximum": 9007199254740991
                },
                "used": {
                  "type": "integer",
                  "minimum": 0,
                  "maximum": 9007199254740991
                },
                "partial": {
                  "type": "boolean",
                  "const": true
                },
                "covered": {
                  "type": "integer",
                  "minimum": 0,
                  "maximum": 9007199254740991
                },
                "uncovered": {
                  "type": "array",
                  "items": {
                    "type": "string",
                    "minLength": 1
                  }
                }
              },
              "required": [
                "tenantId",
                "cap",
                "used",
                "partial",
                "covered",
                "uncovered"
              ],
              "additionalProperties": false
            },
            "contextSymbols": {
              "type": "integer",
              "minimum": 0,
              "maximum": 9007199254740991
            },
            "tier": {
              "type": "string",
              "enum": [
                "light",
                "standard",
                "deep"
              ]
            },
            "tierReasons": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "passes": {
              "type": "object",
              "propertyNames": {
                "type": "string"
              },
              "additionalProperties": {
                "type": "integer",
                "minimum": 0,
                "maximum": 9007199254740991
              }
            },
            "body": {
              "type": "string",
              "minLength": 1
            }
          },
          "required": [
            "tenantId",
            "runId",
            "headSha",
            "changes",
            "risks",
            "checks",
            "counts",
            "skipped",
            "contextSymbols",
            "body"
          ],
          "additionalProperties": false
        },
        "findings": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "tenantId": {
                "type": "string",
                "minLength": 1,
                "maxLength": 128,
                "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]*$",
                "description": "tenant identifier"
              },
              "id": {
                "type": "string",
                "minLength": 1
              },
              "projectId": {
                "type": "string",
                "minLength": 1,
                "maxLength": 128,
                "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]*$",
                "description": "project identifier"
              },
              "provider": {
                "type": "string",
                "enum": [
                  "overlane",
                  "github",
                  "gitlab"
                ]
              },
              "repository": {
                "type": "string",
                "minLength": 1
              },
              "pullNumber": {
                "type": "integer",
                "exclusiveMinimum": 0,
                "maximum": 9007199254740991
              },
              "path": {
                "type": "string",
                "minLength": 1
              },
              "line": {
                "type": "integer",
                "exclusiveMinimum": 0,
                "maximum": 9007199254740991
              },
              "endLine": {
                "type": "integer",
                "exclusiveMinimum": 0,
                "maximum": 9007199254740991
              },
              "severity": {
                "type": "string",
                "enum": [
                  "low",
                  "medium",
                  "high",
                  "critical"
                ]
              },
              "rule": {
                "type": "string",
                "minLength": 1
              },
              "reason": {
                "type": "string",
                "minLength": 1,
                "maxLength": 1000
              },
              "message": {
                "type": "string",
                "minLength": 1,
                "maxLength": 2000
              },
              "status": {
                "type": "string",
                "enum": [
                  "open",
                  "fixed",
                  "dismissed"
                ]
              },
              "fingerprint": {
                "type": "string",
                "pattern": "^[0-9a-f]{64}$"
              },
              "commentId": {
                "type": "string"
              },
              "firstSeenSha": {
                "type": "string",
                "pattern": "^(?:[0-9a-f]{40}|[0-9a-f]{64})$"
              },
              "lastSeenSha": {
                "type": "string",
                "pattern": "^(?:[0-9a-f]{40}|[0-9a-f]{64})$"
              },
              "autofixTaskId": {
                "type": "string",
                "minLength": 1,
                "maxLength": 128,
                "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]*$",
                "description": "task identifier"
              },
              "autofixAssignee": {
                "type": "string",
                "minLength": 1
              },
              "createdAt": {
                "type": "string",
                "format": "date-time",
                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
              },
              "updatedAt": {
                "type": "string",
                "format": "date-time",
                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
              }
            },
            "required": [
              "tenantId",
              "id",
              "projectId",
              "provider",
              "repository",
              "pullNumber",
              "path",
              "line",
              "severity",
              "message",
              "status",
              "fingerprint",
              "firstSeenSha",
              "lastSeenSha",
              "createdAt",
              "updatedAt"
            ],
            "additionalProperties": false
          }
        },
        "replay": {
          "type": "boolean"
        }
      },
      "required": [
        "run",
        "summary",
        "findings",
        "replay"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "dryRun": {
          "type": "boolean",
          "const": true
        },
        "service": {
          "type": "string"
        },
        "requests": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "method": {
                "type": "string"
              },
              "path": {
                "type": "string"
              },
              "body": {},
              "note": {
                "type": "string"
              }
            },
            "required": [
              "method",
              "path"
            ],
            "additionalProperties": false
          }
        },
        "commands": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "writes": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "path": {
                "type": "string"
              },
              "action": {
                "type": "string",
                "enum": [
                  "write",
                  "append",
                  "delete"
                ]
              },
              "description": {
                "type": "string"
              }
            },
            "required": [
              "path",
              "action",
              "description"
            ],
            "additionalProperties": false
          }
        },
        "notes": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "required": [
        "dryRun",
        "requests",
        "commands",
        "writes",
        "notes"
      ],
      "additionalProperties": false
    }
  ]
}

See exit codes for the status the process returns.

Navigation

Type to search…

↑↓ navigate↵ selectEsc close

Overlane Agent

Ask about the docs. Answers are quoted from the pages, with links. This panel cannot change anything.

    Questions are answered in your browser from the docs index. Nothing you type here is stored or sent anywhere.