Skip to content

fix(chat): defer native-main claim until OpenAI helper planning - #4118

Open
luvs01 wants to merge 1 commit into
lidge-jun:devfrom
luvs01:agent/chat-sidecar-main-claim-20260909
Open

fix(chat): defer native-main claim until OpenAI helper planning#4118
luvs01 wants to merge 1 commit into
lidge-jun:devfrom
luvs01:agent/chat-sidecar-main-claim-20260909

Conversation

@luvs01

@luvs01 luvs01 commented Sep 9, 2026

Copy link
Copy Markdown
Contributor

Summary

A keyless Cursor Chat request could claim native main for its entire upstream turn even when it never needed an OpenAI helper. This unnecessarily blocked a native-profile switch. The regression introduced by #4103 is tracked in #4103 (comment).

Defer Chat's optional stored-main sidecar enrichment until the final helper conditions require a canonical Direct candidate. Vision terminal/routed-backend and search tool-choice/compaction/runTurn exclusions now agree with actual planning. The stored pair stays local to sidecar headers, and the existing startup/switch fences, Pool and exact-account selection, and primary/retry credentials remain intact. Public documentation is synchronized in all eight locales.

Verification

  • Current head: 4d988bda127ef7cf70587448b6017476d79b13e7, based on dev 386b6a0d9a8acef818b9c40ebd472e4974750199.
  • The authored runtime and documentation patch rebased unchanged. Earlier focused validation covered stored-main admission, Direct/Pool helper selection and primary-credential isolation; the full current-base CI below supplies integration coverage.
  • Current-head author cross-platform CI run 34439056670: 26/26 jobs passed, bound to 4d988bda127ef7cf70587448b6017476d79b13e7. The checklist CI attestation refers to this completed matrix; local focused results are listed separately.
  • Historical large local runs, where mentioned previously, remain incomplete diagnostic evidence and are not reported as green.

Security review

The stored-token read and native-main admission boundary still require maintainer review and merge approval. Earlier independent and automated source reviews found no blocker; they are not merge approvals.

Checklist

  • Scope stays focused and avoids unrelated cleanup.
  • Docs or release notes were updated when needed.
  • Security-sensitive changes were reviewed for secrets, auth, and unsafe defaults.

Review readiness checklist

  • All CI tests are green on my local testing.
  • I pushed my PR to the latest dev commit.
  • I resolved all correct Codex and CodeRabbit findings.
  • My PR is ready for review.

Readiness base check: 7 commits behind current dev; within the repository allowance of ten.

@coderabbitai

coderabbitai Bot commented Sep 9, 2026

Copy link
Copy Markdown
Contributor

Review Change StackReview Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Advanced

Run ID: 8cc07fad-8a1b-49d1-94d7-71d87895d19d

📥 Commits

Reviewing files that changed from the base of the PR and between c15a98c and 7cf4b84.

📒 Files selected for processing (16)
  • docs-site/src/content/docs/fr/reference/proxy-formats.md
  • docs-site/src/content/docs/ja/reference/proxy-formats.md
  • docs-site/src/content/docs/ko/reference/proxy-formats.md
  • docs-site/src/content/docs/reference/proxy-formats.md
  • docs-site/src/content/docs/ru/reference/proxy-formats.md
  • docs-site/src/content/docs/tr/reference/proxy-formats.md
  • docs-site/src/content/docs/zh-cn/reference/proxy-formats.md
  • docs-site/src/content/docs/zh-tw/reference/proxy-formats.md
  • src/server/chat-completions.ts
  • src/server/responses/core.ts
  • src/vision/plan.ts
  • src/web-search/index.ts
  • structure/08_openai-provider-tiers.md
  • tests/codex-integration/bearer-admission-routed-provider.test.ts
  • tests/vision/vision-cache.test.ts
  • tests/web-search/web-search.test.ts

Included review availability: Your plan provides up to 10 included reviews per hour; 9 remain after this review.


📝 Walkthrough

Walkthrough

Chat sidecar authentication now defers stored native-main access until an OpenAI helper has a canonical Direct candidate. Vision and web-search planning apply additional eligibility checks. Tests and localized documentation cover the updated behavior.

Changes

Cursor sidecar authentication

Layer / File(s) Summary
Gate stored-main authentication
src/server/chat-completions.ts, src/server/responses/core.ts, structure/08_openai-provider-tiers.md, docs-site/src/content/docs/*/reference/proxy-formats.md
Chat passes permission for deferred sidecar authentication. Responses core can admit stored native-main credentials for qualifying Direct helpers. Documentation describes credential separation, profile-switch protections, and account selection.
Resolve sidecar requirements
src/server/responses/core.ts
Sidecar setup skips terminal vision recursion and routed-compaction web search. Deferred native-main credentials remain local to sidecar headers.
Validate vision and web-search helpers
src/vision/plan.ts, src/web-search/index.ts
Vision planning uses a shared validation helper for usable routed models. Web-search sidecar resolution stops when toolChoice excludes the built-in web-search tool.
Validate authentication and planning behavior
tests/codex-integration/bearer-admission-routed-provider.test.ts, tests/vision/vision-cache.test.ts, tests/web-search/web-search.test.ts
Tests cover profile switching, Cursor bearer separation, owned and pool account modes, routed vision planning, and forbidden web-search choices.

Estimated code review effort: 3 (Moderate) | ~25 minutes

Sequence Diagram(s)

sequenceDiagram
  participant Cursor
  participant ChatBridge
  participant SidecarPlanner
  participant NativeMain
  Cursor->>ChatBridge: Send Chat request
  ChatBridge->>SidecarPlanner: Plan vision or web-search helper
  SidecarPlanner->>NativeMain: Request stored auth only for qualifying Direct helper
  NativeMain-->>SidecarPlanner: Return sidecar credential
  SidecarPlanner-->>ChatBridge: Build request-local sidecar headers
  ChatBridge-->>Cursor: Continue Cursor response flow
Loading

Merge Risk: ⚪ Minimal · up to 7cf4b

The deferred sidecar-authentication behavior preserves profile switching for unrelated Cursor requests while retaining helper authentication safeguards and account selection. No merge-blocking risk remains.

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 33.33% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 9 functions across 7 files. (9 skipped: 9… Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly and concisely describes the main change: delaying the native-main authentication claim until OpenAI helper planning requires it.
Full details: Docstring Coverage

Explanation

Docstring coverage is 33.33% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 9 functions across 7 files. (9 skipped: 9 unsupported.)

  • Fix all pre-merge checks with AI
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actions

github-actions Bot commented Sep 9, 2026

Copy link
Copy Markdown
Contributor

Deterministic PR hygiene checks passed.

@github-actions github-actions Bot added the bug Something isn't working label Sep 9, 2026
@github-actions

github-actions Bot commented Sep 9, 2026

Copy link
Copy Markdown
Contributor

✅ READY

  • all PR quality gates passed; the review readiness checklist is complete.

Review readiness checklist

  • ✅ All CI tests are green on my local testing.
  • ✅ I pushed my PR to the latest dev commit.
  • ✅ I resolved all correct Codex and CodeRabbit findings.
  • ✅ My PR is ready for review.

4/4 boxes ticked.

This pull request is already Ready for Review.
The review-ready label marks this PR as ready; review automation runs independently.
Maintainers: @lidge-jun @Ingwannu

@luvs01

luvs01 commented Sep 9, 2026

Copy link
Copy Markdown
Contributor Author

@coderabbitai review

Please review immutable head f5566a4e16a5a9f13fa5909d122e835343518579, especially agreement between final helper planning and stored-main admission, startup/switch fences, and preservation of caller, primary, retry, Pool and exact-account authentication. The PR is Draft while import-connected validation and full author CI run. Maintainer security review is requested for this authentication boundary as described in the PR body.

@coderabbitai

coderabbitai Bot commented Sep 9, 2026

Copy link
Copy Markdown
Contributor
🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

expected='f5566a4e16a5a9f13fa5909d122e835343518579'
printf '%s\n' '== checked-out revision =='
git rev-parse HEAD
git status --short
printf '%s\n' '== commit object =='
git show -s --format='%H%n%P%n%s' "$expected"
printf '%s\n' '== PR metadata =='
gh pr view 4118 --repo lidge-jun/opencodex --json number,title,baseRefName,baseRefOid,headRefName,headRefOid,files
printf '%s\n' '== diff stat =='
git diff --stat "${expected}^1" "$expected"
printf '%s\n' '== changed files =='
git diff --name-only "${expected}^1" "$expected"
printf '%s\n' '== source outlines for likely changed implementation and test files =='
git diff --name-only "${expected}^1" "$expected" |
  while IFS= read -r f; do
    case "$f" in
      *.ts|*.tsx|*.js|*.mjs|*.cjs)
        echo "-- $f"
        ast-grep outline "$f" --items all --view expanded || true
        ;;
    esac
  done
printf '%s\n' '== focused symbols and references =='
rg -n -C 4 -i \
  'stored.main|storedMain|native.main|nativeMain|claim.*main|main.*claim|Direct.*candidate|Pool|exact.account|exactAccount|runTurn|tool.choice|toolChoice|compaction|vision' \
  . -g '!node_modules' -g '!dist' -g '!build' | head -n 1800

Length of output: 176188


🏁 Script executed:

#!/bin/bash
set -euo pipefail

base='57077ca3260494aa4266b4108a7bd4c8a4dac288'
head='f5566a4e16a5a9f13fa5909d122e835343518579'

printf '%s\n' '== implementation diffs =='
git diff --unified=80 "$base" "$head" -- \
  src/server/chat-completions.ts \
  src/server/responses/core.ts \
  src/vision/plan.ts \
  src/web-search/index.ts

printf '%s\n' '== focused test diffs =='
git diff --unified=50 "$base" "$head" -- \
  tests/codex-integration/bearer-admission-routed-provider.test.ts \
  tests/vision/vision-cache.test.ts \
  tests/web-search/web-search.test.ts

printf '%s\n' '== changed-line locations =='
git diff --unified=0 "$base" "$head" -- \
  src/server/chat-completions.ts src/server/responses/core.ts src/vision/plan.ts src/web-search/index.ts |
  grep -E '^\+\+\+|^@@'

printf '%s\n' '== native-main admission implementation =='
fd -a '^native-main-admission\.ts$' . -x sh -c 'echo "-- $1"; cat -n "$1"' sh {}

printf '%s\n' '== response handler planning area =='
sed -n '3170,3700p' src/server/responses/core.ts | cat -n
sed -n '3700,4350p' src/server/responses/core.ts | cat -n

printf '%s\n' '== chat handler area =='
sed -n '70,330p' src/server/chat-completions.ts | cat -n

printf '%s\n' '== planning modules =='
cat -n src/vision/plan.ts
sed -n '185,340p' src/web-search/index.ts | cat -n

Length of output: 204182


🏁 Script executed:

#!/bin/bash
set -euo pipefail

printf '%s\n' '== OpenAI sidecar resolver =='
cat -n src/providers/openai-sidecar.ts | sed -n '1,290p'

printf '%s\n' '== response recursive calls and stored-sidecar permission =='
rg -n -C 10 'handleResponses\(|handleResponsesInner\(|allowStoredOpenAiSidecarAuth|openAiSidecarAuth' \
  src/server/responses/core.ts src/server/chat-completions.ts src/server \
  -g '*.ts'

printf '%s\n' '== helper plans and execution in the response handler =='
rg -n -C 12 'planVisionSidecar|planWebSearch|runWithWebSearch|openAiSidecar|needsOpenAi' \
  src/server/responses/core.ts

printf '%s\n' '== routing candidate construction and account-mode combinations =='
rg -n -C 8 'listOpenAiForwardSidecarCandidates|OpenAiForwardSidecarCandidate|codexAccountMode|OPENAI_CODEX_PROVIDER_ID|LEGACY_OPENAI_MULTI_PROVIDER_ID' \
  src/providers src/codex src/server -g '*.ts' | head -n 1400

printf '%s\n' '== focused test names and helper-auth assertions =='
rg -n -C 6 'stored|sidecar|native main|native-main|switch|combo|pool|exact|retry|runTurn|tool.choice|compaction' \
  tests/codex-integration/bearer-admission-routed-provider.test.ts \
  tests/vision/vision-cache.test.ts tests/web-search/web-search.test.ts | head -n 1800

Length of output: 201748


🏁 Script executed:

#!/bin/bash
set -euo pipefail

printf '%s\n' '== candidate construction and resolution =='
sed -n '1,240p' src/providers/openai-sidecar.ts | cat -n

printf '%s\n' '== all stored-sidecar permission references =='
rg -n -C 14 'allowStoredOpenAiSidecarAuth' src -g '*.ts'

printf '%s\n' '== combo dispatcher children =='
sed -n '2590,3170p' src/server/responses/core.ts | cat -n

printf '%s\n' '== helper resolution and execution branch =='
sed -n '4400,4740p' src/server/responses/core.ts | cat -n

printf '%s\n' '== post-planning web-search dispatch references =='
rg -n -C 10 'const webSearchPlan|planWebSearch\(|runWithWebSearch\(' src/server/responses/core.ts

printf '%s\n' '== exact new test region =='
sed -n '430,610p' tests/codex-integration/bearer-admission-routed-provider.test.ts | cat -n

Length of output: 84387


@luvs01 Reviewed immutable head f5566a4e16a5a9f13fa5909d122e835343518579.

I found no blocking issues in the focused review.

Key checks completed:

  • src/server/responses/core.ts, Lines 4428-4463, now evaluates terminal vision, routed compaction, runTurn, and web-search tool-choice exclusions before it resolves a helper credential.
  • The stored-main read occurs only when allowStoredOpenAiSidecarAuth is set, the final route is not exact-account-qualified, and the canonical sidecar candidate is Direct.
  • src/providers/openai-sidecar.ts, Lines 57-78, creates one canonical candidate only. Therefore, the Direct-candidate check cannot claim native main for a separate Pool candidate.
  • Pool helper selection continues through resolveCodexAuthContext. It does not read or claim stored native-main auth.
  • The stored pair stays in local sidecarAuth and sidecarHeaders. The code does not promote it into the caller, primary, or retry header paths.
  • src/server/responses/core.ts, Lines 277-297 in handleComboResponses, forwards the option set to concrete combo children. This preserves the admission boundary while allowing final-child planning.
  • src/vision/plan.ts, Lines 95-119 and 158-172, uses the same routed-vision predicate for sidecar admission and planning.
  • src/web-search/index.ts, Lines 198-205, now excludes OpenAI helper resolution when tool_choice disallows web_search.
  • The added regression matrix covers Direct, Pool, startup-fenced, terminal vision, routed vision, Anthropic vision, runTurn, and excluded tool_choice conditions.

I did not run repository tests because the sandbox does not permit executing repository code. The pending import-connected validation and author CI remain the required execution evidence.

✅ Action performed

Review finished.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@github-actions
github-actions Bot marked this pull request as ready for review September 9, 2026 13:09

@Ingwannu Ingwannu left a comment

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Completed the requested source-level authentication-boundary review on this exact head. Stored main is claimed before reading, only via the internal Chat permission and an eligible canonical Direct helper candidate; the candidate selector returns only the canonical OpenAI row. The captured pair remains local to sidecar headers and is not assigned to caller/primary/retry authority. Pool and exact-account branches remain separately resolved. Startup/drain fences still apply.

I traced terminal/routed-vision, runTurn/compaction and tool-choice exclusions into final helper planning. The held Cursor request regression checks the actual active request count and a successful profile switch before the upstream settles, while the helper cases observe which bearer reaches each wire. That is materially stronger than checking only a returned status. No blocking credential-boundary defect found in this patch.

Author CI 34352957960 is successful on this exact head; its report is separate from the disclosed incomplete local run. I did not execute the contributor code locally. This review does not bypass repository required CI or authorize a merge; the current upstream rollup contains the intake checks rather than an executed product suite.

@lidge-jun

Copy link
Copy Markdown
Owner

리뷰 · 우선순위 76 / 80

이 PR은 #4103이 심은 keyless Cursor Chat의 native-main 조기 claim을 되돌리는 핫픽스다. 지금 로컬 dev HEAD는 3b4d8c439(#4132 Spark quota devlog fin, 그 앞 #4114 owned-root guidance)이고 버전선은 2.50.0이다. tip의 src/server/chat-completions.ts 263–282줄은 여전히 !callerAuthorizationRoute || (settledRoute && !isCanonicalOpenAiForwardProvider(...))이면 Chat 다리에서 바로 tryClaimNativeMainProfileForTurn을 호출하고 stored main을 openAiSidecarAuth에 넣는다. OpenAI vision/search helper가 없어도 claim이 turn 전체에 남아서, 열린 Cursor HTTP/2 요청이 있는 동안 native-profile switch가 막힌다. 본문이 가리킨 #4103 discussion과 같은 회귀다.

고치는 축은 짧다. Chat(src/server/chat-completions.ts)은 caller-auth·noncanonical settled 경로에서 더 이상 미리 claim하지 않고, allowStoredOpenAiSidecarAuth 내부 권한만 Responses로 넘긴다. Responses(src/server/responses/core.ts)는 vision terminal·routed compaction·adapter.runTurn을 먼저 걸러 needsOpenAiVision/needsOpenAiSearch가 진짜일 때만, Direct 후보가 있고 exact-account가 아닐 때 claim→getMainAccountToken→sidecar 헤더 로컬 스냅샷을 만든다. 그 쌍은 caller/primary/retry로 승격되지 않는다. src/vision/plan.tsusableRoutedVisionModel은 auth admission과 planning이 routed describer에서 같이 false/true를 보게 하고, src/web-search/index.tstoolChoice가 hosted web_search를 금지하면 OpenAI search auth resolve 자체를 끈다. structure/08_openai-provider-tiers.md와 proxy-formats 8 locale은 같은 계약을 문서화한다.

왜 지금 tip 기준으로 점수가 높은가. #4102/#4103 credential-domain·sidecar 열차의 운영 회귀(프로필 전환 막힘)를 직접 고치고, tip이 최근에 올린 Spark quota modelId 전달(#4128 계열, core.ts 다른 구역)과 겹치는 제품 의도는 없다. types.ts/config.ts 대형 분할 무효화·중복 close 대상도 아니다. 검증은 held Cursor 요청 동안 getNativeMainProfileRequestCount()===0 + switch API 200을 여러 시나리오(configured-vision-textsearch-tool-choice-none)로 잠그고, owned/fenced/pool helper wire까지 확장했다. Ingwannu 소스급 auth-boundary 리뷰는 이 exact head에서 blocker 없음. 작성자 full CI 34352957960 26/26(attempt 1)도 같은 head다. PR base는 57077ca3라 tip(3b4d8c439)보다 몇 머지가 뒤지만, tip이 만진 core.ts는 quota observer 쪽이라 이 패치의 sidecar claim 구간과 충돌 여지는 작다. 그래도 랜딩 전 tip rebase 한 번이 안전하다.

src/server/chat-completions.ts allowStoredOpenAiSidecarAuth 전달 - caller-auth이고 settled가 noncanonical일 때만 true. 미리 claim을 빼고 권한만 넘기는 방향이 맞다. settled가 비면 false라 sidecar가 필요한데도 enrichment가 안 될 수 있으니, Chat에서 이 지점 이전에 settled가 항상 채워지는지만 #4103 inventory와 한 줄 대조하면 된다.
src/server/responses/core.ts claim-before-read + try/catch optional - 스위치 fence를 지키면서 enrichment 실패를 요청 전체 실패로 안 키운다. 좋음. 다만 claim 성공 후 token read가 비면 claim만 남는 짧은 창이 있는지 lease 수명과 한번만 맞춰 보면 된다.
src/vision/plan.ts usableRoutedVisionModel - shouldResolve가 routed에서 false가 되어 stored OpenAI auth를 빌리지 않는다. bare/misconfigured routed는 legacy openai fallback으로 가며 테스트가 잠근다.
src/web-search/index.ts toolChoice 가드 - planWebSearch와 resolve 조건을 맞춰, tool_choice none/다른 함수만 허용일 때 auth resolve를 안 한다. 불필요 claim 경로를 하나 더 막는다.
tests/.../bearer-admission-routed-provider.test.ts held-upstream 회귀 - status가 아니라 active request count + switch 성공을 본다. 예전 502 fixture 의존보다 목적에 가깝다. pool/pool-fenced wire도 claimed:!pool로 Direct와 분리한다.
경로 tip rebase - 57077ca33b4d8c439 사이 core.ts quota modelId 터치가 있어, merge 직전 tip 재기지가 충돌을 미리 없앤다. 제품 충돌로 닫을 성격은 아니다.
Draft/라벨 - Draft 아님, bug+review-ready. 게이트 hygiene/enforce-target/label은 통과. mergeStateStatus BLOCKED는 승인·required check 쪽이지 이 리뷰가 라벨을 바꿀 일은 아니다.

메인테이너의 판단이 필요한 지점

  • tip(3b4d8c439) rebase 후 exact-head product CI를 한 번 더 볼지, 작성자 CI 26/26 + Ingwannu boundary로 충분한지
  • claim 성공·token 없음 창을 lease 해제 계약으로 더 잠글지, 현재 optional catch로 둘지
  • fix(auth): retain stored sidecar auth for caller-auth Chat #4103 leftover discussion을 이 PR 머지 커밋으로 닫힌 것으로 표기할지
  • 2.50.0 tip 열차에 바로 태울지(프로필 스위치 회귀라 전자가 설득력 큼)

너의 추천
tip에 짧게 rebase한 뒤 머지. 방향(helper 필요할 때만 Direct stored claim, Cursor wire와 분리, Pool/exact-account 유지, 문서 8 locale 동기)이 #4102/#4103 계약과 맞고, held-request 회귀가 운영 증상을 직접 잠근다. 다음 스텝: (1) 3b4d8c439 위 rebase, (2) bearer-admission·vision·web-search 관련 스위트/작성자 CI 확인, (3) dev 랜딩. types/config 분할 무효화 아님. 인증 운영 회귀 + 테스트 강도라 76.

이 댓글은 grok-bot이 작성했습니다

@luvs01
luvs01 force-pushed the agent/chat-sidecar-main-claim-20260909 branch from f5566a4 to 7cf4b84 Compare September 10, 2026 02:31
@coderabbitai

coderabbitai Bot commented Sep 10, 2026

Copy link
Copy Markdown
Contributor

Note

GitHub couldn't provide a complete incremental comparison for this pull request, so CodeRabbit is performing a full review instead. This review may take a little longer.

@github-actions
github-actions Bot marked this pull request as draft September 10, 2026 02:32
@github-actions
github-actions Bot marked this pull request as ready for review September 10, 2026 03:04
@luvs01
luvs01 force-pushed the agent/chat-sidecar-main-claim-20260909 branch from 7cf4b84 to 4d988bd Compare September 10, 2026 04:55
@github-actions
github-actions Bot marked this pull request as draft September 10, 2026 04:55
@luvs01
luvs01 marked this pull request as ready for review September 10, 2026 05:53
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Sep 10, 2026

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review Completed 2026-09-10T05:58:03.071847Z 4d988bd Draft marked ready
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug Something isn't working review-ready

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants