Repository navigation
Conversation
* fix(llm): allow unlisted OpenRouter model overrides * docs(llm): clarify OpenRouter model overrides * fix(llm): allow unlisted model overrides for built-in providers * fix(llm): share stderr test helper across platforms --------- Co-authored-by: kite <lizhengfeng.lzf@alibaba-inc.com>
…aba#1159) * fix(llm): let --timeout raise the per-request HTTP deadline The --timeout flag documents a concurrent-task timeout in minutes, but the per-request HTTP deadline stayed at the client's independent 5-minute default. A review of one slow file therefore failed with classification=timeout at duration_to_headers_ms≈300000 even when the caller granted --timeout 30, and no CLI setting could let the file review finish (issue alibaba#1155). ResolveOptions gains a TaskTimeout field: when no env (OCR_LLM_TIMEOUT) or config-file (timeout_sec) request timeout is set, the task budget raises the request deadline so a single request can use the whole task budget. Existing precedence is unchanged — env and config-file timeouts still win, and leaving --timeout at its default keeps the 5-minute client default. ocr review and ocr scan both pass their --timeout value through. Fixes alibaba#1155 * fix(cmd): feed the concurrent task timeout into the request deadline main replaced the per-file timeout flag with --timeout binding concurrentTaskTimeout, and the agent applies it as a context deadline across review rounds — but the per-request HTTP deadline stayed at the client's independent 5-minute default, so a single slow file request could still die inside a task that had plenty of budget left (alibaba#1155's original symptom). Wire ResolveOptions.TaskTimeout from the live opts.concurrentTaskTimeout (minutes) in both review and scan commands. Precedence is unchanged: env OCR_LLM_TIMEOUT and config-file timeout_sec still win, and an unset task timeout keeps the 5-minute client default. * fix(llm): keep request and task timeouts independent * docs: localize timeout configuration guidance * fix(llm): avoid attributing caller deadlines to task timeout --------- Co-authored-by: Kite <254839944+lizhengfeng101@users.noreply.github.com> Co-authored-by: kite <lizhengfeng.lzf@alibaba-inc.com>
…rst (alibaba#1598) `ocr scan --path .` selected no files and exited 0. `git ls-files` prints repository-relative names such as `main.go`, and filterByPaths matches an exact path or a `<selector>/` prefix, so a selector left as "." matched nothing. `--path ./` normalized to the same dead selector. Both spellings now mean the whole repository, which is what an omitted --path already means. filepath.ToSlash also ran after the "./" trim. On Windows a selector like `.\internal\scan` only becomes `./internal/scan` during that conversion, so the prefix survived the trim and matched nothing there either. ToSlash now runs first, and the "./" trim repeats so `././` collapses. A root selector alongside a narrower one widens the scan, since the root already covers it. closes alibaba#1596 closes alibaba#1597
…a#1062) * docs(delegate): disable git pagers in agent environments * docs(delegate): streamline pager guidance * docs(delegate): clarify pager terminology * docs(delegate): harden diff retrieval across integrations * fix(ci): refresh Go toolchains and simplify delegate docs * fix(delegate): complete pager and path coverage * fix(ci): restore patched Go dependencies * docs(delegate): simplify review instructions * test(delegate): reject empty command examples --------- Co-authored-by: Qiyuanqiii <267806965+Qiyuanqiii@users.noreply.github.com>
…libaba#1626) Co-authored-by: gu-feng418 <287555569+gu-feng418@users.noreply.github.com> Co-authored-by: Kite <254839944+lizhengfeng101@users.noreply.github.com>
Co-authored-by: Kite <254839944+lizhengfeng101@users.noreply.github.com>
alibaba#1680) Co-authored-by: Kite <254839944+lizhengfeng101@users.noreply.github.com>
…ba#1698) Co-authored-by: Kite <254839944+lizhengfeng101@users.noreply.github.com>
Add an independent stdio ACP adapter with slash commands, optional natural-language parsing, managed review/scan processes, CI, and multilingual setup docs. Keep the OCR CLI source and prompts unchanged. * refactor(acp): add ACP adapter and supporting services * ci(acp): use patched Go toolchain * docs(acp): trim support caveats and sync CI notes Drop dated verification claims and the prebuilt-binary disclaimer so the adapter docs match the current local-build story and acp-ci.yml. Co-authored-by: Kite <254839944+lizhengfeng101@users.noreply.github.com>
…a#1652) * fix(scan): record rendered prompt overflow as a failed review Fixes alibaba#1650 * fix(scan): preserve reused checkpoints when new tasks fail Signed-off-by: Rui <1685901819@qq.com> --------- Signed-off-by: Rui <1685901819@qq.com>
…baba#1622) * feat(auth): enable ChatGPT plan reviews through public Responses * fix(auth): prevent stale credential status and provider keys * Fix ChatGPT auth tests on Windows --------- Co-authored-by: kite <lizhengfeng.lzf@alibaba-inc.com>
…a#1622) (alibaba#1718) * Fix ChatGPT auth recovery and provider credential handling * Handle rejected refresh identities and review feedback * docs: explain ChatGPT recovery and gateway credentials * Fix refresh window after pending token recovery --------- Co-authored-by: Qiyuanqiii <267806965+Qiyuanqiii@users.noreply.github.com>
* ci(release): publish to npm via trusted publishing Replace the NPM_TOKEN secret with GitHub OIDC token exchange, and add a manually triggered job that verifies every package's trusted publisher configuration without publishing anything. npm only accepts an OIDC exchange from a cloud-hosted runner, so those two jobs run on ubuntu-latest while the Go build matrix stays on self-hosted. * fix(ci): harden npm trusted publishing checks * fix(test): encode all slashes in release contract URLs
* chore(deps): bump google.golang.org/grpc Bumps the go_modules group with 1 update in the / directory: [google.golang.org/grpc](https://github.com/grpc/grpc-go). Updates `google.golang.org/grpc` from 1.83.0 to 1.83.1 - [Release notes](https://github.com/grpc/grpc-go/releases) - [Commits](grpc/grpc-go@v1.83.0...v1.83.1) --- updated-dependencies: - dependency-name: google.golang.org/grpc dependency-version: 1.83.1 dependency-type: indirect ... Signed-off-by: dependabot[bot] <support@github.com> * chore(deps): bump google.golang.org/grpc Bumps the go_modules group with 1 update in the / directory: [google.golang.org/grpc](https://github.com/grpc/grpc-go). Updates `google.golang.org/grpc` from 1.83.1 to 1.83.2 - [Release notes](https://github.com/grpc/grpc-go/releases) - [Commits](grpc/grpc-go@v1.83.1...v1.83.2) --- updated-dependencies: - dependency-name: google.golang.org/grpc dependency-version: 1.83.2 dependency-type: indirect dependency-group: go_modules ... Signed-off-by: dependabot[bot] <support@github.com> * Ok * chore(deps): bump the npm_and_yarn group across 2 directories with 2 updates Bumps the npm_and_yarn group with 1 update in the /extensions/vscode directory: [markdown-it](https://github.com/markdown-it/markdown-it). Bumps the npm_and_yarn group with 1 update in the /plugins/open-code-review/opencode directory: [ip-address](https://github.com/beaugunderson/ip-address). Updates `markdown-it` from 14.2.0 to 14.3.2 - [Changelog](https://github.com/markdown-it/markdown-it/blob/14.3.2/CHANGELOG.md) - [Commits](markdown-it/markdown-it@14.2.0...14.3.2) Updates `ip-address` from 10.7.0 to 10.7.3 - [Release notes](https://github.com/beaugunderson/ip-address/releases) - [Commits](beaugunderson/ip-address@v10.7.0...v10.7.3) --- updated-dependencies: - dependency-name: markdown-it dependency-version: 14.3.2 dependency-type: indirect dependency-group: npm_and_yarn - dependency-name: ip-address dependency-version: 10.7.3 dependency-type: indirect dependency-group: npm_and_yarn ... Signed-off-by: dependabot[bot] <support@github.com> * chore: limit dependency PR to grpc update --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: kite <lizhengfeng.lzf@alibaba-inc.com>
* fix(llmloop): count a grace-round task_done as completion The grace round after an exhausted budget offers only code_comment and task_done, and asks the model to call task_done when it has nothing further to report. That checkpoint was discarded and RunMainTask returned completed=false, so a file the model had finished was recorded as incomplete: scan wrote review_item_failed instead of a reusable review_item_done, and a later resume re-ran it. Report grace-round completion and return it. Stops that never run a grace round, and a task_done(FAILED), are unchanged. closes alibaba#1018 * fix(llmloop): warn when a review limit reaches the grace round A task that spends its tool-request rounds or token budget and then completes in the grace round reported success with no trace of the limit, so a zero-finding result could read as clean. Record a review_limit_reached warning with the stop reason and the round's verdict, and qualify the zero-finding message in text and JSON output. Completion, the reusable checkpoint, and budget_exceeded are unchanged. * fix(llmloop): let failure veto grace-round completion --------- Co-authored-by: Kite <254839944+lizhengfeng101@users.noreply.github.com> Co-authored-by: kite <lizhengfeng.lzf@alibaba-inc.com>
…libaba#1745) * fix(scan): surface llmloop token-budget stop on the run-level state `alibaba#1248` (merged 2026-09-17) added an in-conversation token-budget stop to `internal/llmloop.RunMainTask` and wired its `StopTokenBudget` outcome through to the review path's run-level `budgetExceeded` flag plus a `token_budget_reached` warning (see `internal/agent/agent.go` near `executeGroupSubtask`). The scan path was left out: `internal/scan.Agent.budgetExceeded` is still set only by the dispatchBatch look-ahead check, and `executeSubtask` does not react to a `StopTokenBudget` returned by `llmloop.RunMainTask`. The result is that an in-flight token-budget stop fired mid-task on a scan run leaves: - `cmd/opencodereview` `--format json` `budget_exceeded: false` even though the run stopped on the budget, and the stderr `budget_exceeded=...` line lying for the same reason; - no `token_budget_reached` warning, so `ocr session list` and the other warnings-driven surfaces can't distinguish a budget stop from other failure modes. This change mirrors the review path: in `executeSubtask`, on a non-completed stop with `stop == llmloop.StopTokenBudget`, atomically flip `budgetExceeded` via `CompareAndSwap` and emit one `token_budget_reached` warning. `budgetExceeded` is now `atomic.Bool` (was plain `bool`) for the same reason the review agent uses one. Fixes the gap between the two commands' `BudgetExceeded()` / `token_budget_reached` reporting. The per-item failure record keeps existing semantics: the inner `main_task did not complete before stopping: <Reason>` string still feeds the `scan_subtask_error` warning unchanged, so the diagnostic that survives `--format json` continues to name the stop trigger via `llmloop.StopTokenBudget.Reason()`. * docs: Apply batched suggestions from code review Co-authored-by: Kite <254839944+lizhengfeng101@users.noreply.github.com> --------- Co-authored-by: Kite <254839944+lizhengfeng101@users.noreply.github.com>
…self-defined) (alibaba#1661) * main fix * chore: write tests (AI) * fix(config): validate dotted provider names across CLI and IDEs --------- Co-authored-by: Kite <254839944+lizhengfeng101@users.noreply.github.com>
* terraform: adding .tofu extension (used by opentofu projects) * table align in md files --------- Co-authored-by: Kite <254839944+lizhengfeng101@users.noreply.github.com>
…ibaba#1721) Keep the CONTRIBUTING Project Structure trees in sync with main, including internal/chatgptauth from alibaba#1622 (review feedback on alibaba#1721). Co-authored-by: Frank-zhu2000 <332350688+Frank-zhu2000@users.noreply.github.com> Co-authored-by: Kite <254839944+lizhengfeng101@users.noreply.github.com>
…s multiple languages (alibaba#1729) - Enhanced the contributing documentation by adding new sections for `acp`, `docs`, `imgs`, `chatgptauth`, `delegate`, `llmloop`, `mcp`, `scan`, and `scripts`. - Improved clarity in existing sections, particularly in `cmd/opencodereview/`, emphasizing the role of command dispatch. - Ensured consistency in terminology and descriptions across English, Japanese, Korean, Russian, and Chinese versions of the documentation. Co-authored-by: Kite <254839944+lizhengfeng101@users.noreply.github.com>
* feat(rules): add PowerShell review support * docs(rules): sync PowerShell translations * fix(rules): refine PowerShell guidance and regression tests --------- Co-authored-by: Kite <254839944+lizhengfeng101@users.noreply.github.com>
* docs: nushell.md from @hustcer * feat: file extensions * chore: add new nu (NU) extensions * Credits for `nushell.md` Co-authored-by: hustcer <hustcer@outlook.com> * docs: update supported languages * fixup: CI failures from bad merge * chore: fix merge * credits for nushell.md * docs: sync nushell into korean site docs * chore: append excludsion to indexes * chore: format with prettier [skip ci] --------- Co-authored-by: hustcer <hustcer@outlook.com> Co-authored-by: Kite <254839944+lizhengfeng101@users.noreply.github.com>
…paths (alibaba#1709) * fix(scan): match --path selectors case-insensitively On Windows and macOS a --path selector such as SRC names an existing directory (the filesystem resolves it), but filterByPaths compared selectors to git ls-files output byte-for-byte, so the scan silently selected no files and exited 0. Fold case like the other user-facing path filters (--include/--exclude, secret paths, the extension allowlist). Refs alibaba#1708 * fix(scan): prefer the exact --path spelling before folding case A selector now matches its own spelling first, so on a case-sensitive filesystem --path src cannot widen to a sibling SRC/; case-insensitive matching stays as a per-selector fallback, the repair for --path SRC on Windows and macOS. Documented on the ocr scan page in all locales. * fix(scan): resolve --path against the filesystem before folding case A selector's own spelling is tried first; a spelling that names nothing must resolve in the working tree before case folding applies, so on a case-sensitive filesystem a wrongly-cased --path is an error instead of a folded match or a silent empty scan. Docs updated in all locales. * fix(scan): resolve --path selectors to their on-disk path A selector that names nothing in its own spelling is resolved against the working tree -- symlinks followed, on-disk case taken where the filesystem folds it -- and only the resolved path is matched, replacing the case-fold fallback. An empty src/docs/ therefore selects nothing on a case-sensitive filesystem even while src/DOCS/ holds tracked files. --------- Co-authored-by: Kite <254839944+lizhengfeng101@users.noreply.github.com>
Co-authored-by: kite <lizhengfeng.lzf@alibaba-inc.com>
…baba#1770) Co-authored-by: ydflow <314143294+ydflow@users.noreply.github.com> Co-authored-by: Kite <254839944+lizhengfeng101@users.noreply.github.com>
…baba#1773) Co-authored-by: ydflow <314143294+ydflow@users.noreply.github.com> Co-authored-by: Kite <254839944+lizhengfeng101@users.noreply.github.com>
|
| CVE | Package | Version | Fix |
|---|---|---|---|
| CVE-2026-111758 | markdown-it |
14.3.2 |
14.3.3 |
| CVE-2026-93687 | braces |
3.0.3 |
— |
🟢 Low · 1 finding
| CVE | Package | Version | Fix |
|---|---|---|---|
| CVE-2026-111766 | markdown-it |
14.3.2 |
14.3.3 |
View full analysis in Upwind Console
Scan completed in 11s
Scan history (1 scan)
| Commit | Scanned at | New | Resolved | Net |
|---|---|---|---|---|
375f64c < |
2026-10-22 18:59 UTC | +3 | 0 | +3 |
Last scanned: 375f64c · 2026-10-22 18:59 UTC
|
| Commit | Scanned at | New | Resolved | Net |
|---|---|---|---|---|
375f64c < |
2026-10-22 18:59 UTC | 0 | 0 | 0 |
Last scanned: 375f64c · 2026-10-22 18:59 UTC
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
|
| File | Line | Type | Value |
|---|---|---|---|
acp/internal/intent/llm/resolve.go |
36 | generic-api-key | OCR_••••_KEY |
internal/llm/bedrock_test.go |
347 | generic-api-key | sk-t••••-key |
internal/llm/resolver.go |
78 | generic-api-key | ANTH••••OKEN |
scripts/github-actions/release-contract.test.js |
101 | generic-api-key | fixt••••oken |
🔶 PII · 1 finding
| File | Line | Type | Value |
|---|---|---|---|
extensions/frontend/package-lock.json |
2871 | ••••@izs.me (+1 more) |
A secret that has been pushed remains in the repository's history even after the line is removed.
Scan completed in 1s.
Scan history (1 scan)
| Commit | Scanned at | New | Resolved | Net |
|---|---|---|---|---|
375f64c < |
2026-10-22 18:59 UTC | +5 | 0 | +5 |
Last scanned: 375f64c · 2026-10-22 18:59 UTC
| version "14.2.0" | ||
| resolved "https://registry.npmjs.org/markdown-it/-/markdown-it-14.2.0.tgz#06d48d9035e77d5b1c85adb315482fc8240289ef" | ||
| integrity sha512-1TGiQiJVRQ3NPmZH6sx5Cfnmg6GQm9jvC1ch4TK511NjSJvjzKLzn5pPfZRNZkRPZP0HqCioSndqH8v2nRaWVQ== | ||
| markdown-it@^14.1.0, markdown-it@^14.3.1: |
There was a problem hiding this comment.
High severity vulnerability may affect your project—review required:
Line 3852 lists a dependency (markdown-it) with a known High severity vulnerability.
ℹ️ Why this matters
Affected versions of markdown-it are vulnerable to Inefficient Algorithmic Complexity / Uncontrolled Resource Consumption. markdown-it processes link reference definitions with an unclosed, multi-line label or title in quadratic time in its block "reference" rule. Passing attacker-controlled Markdown to render() or parse() with default options can block the Node.js event loop (or browser main thread) for many seconds (denial of service). renderInline()/parseInline() do not run the block parser and are not affected; the "zero" preset or md.disable("reference") also avoid the vulnerable rule.
References: https://euvd.enisa.europa.eu/vulnerability/EUVD-2026-105358, GHSA
To resolve this comment:
Check if you run markdown-it via the CLI.
- If you're affected, upgrade this dependency to at least version 14.3.3 at extensions/vscode/yarn.lock.
- If you're not affected, comment
/fp we don't use this [condition]
💬 Ignore this finding
To ignore this, reply with:
/fp <comment>for false positive/ar <comment>for acceptable risk/other <comment>for all other reasons
You can view more details on this finding in the Semgrep AppSec Platform here.
Regular upstream sync: merges alibaba/open-code-review
mainat 375f64c (32 commits since a758d9c) into thesendbirdbuild branch. Brings in the grace-round completion fix (alibaba#1678) that replaced our closed #2. Our carried patch (alibaba#1656) merges cleanly.🤖 Generated with Claude Code
https://claude.ai/code/session_016fFEYAkexJ1sSe5eeLxxuH