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-runBehavior
- 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.