Repository navigation
Conversation
- 新增服务端环境开关,让后台和工作区准备 fetch 可保留继承的 GIT_ASKPASS,默认行为不变。 - 保持终端提示、Git Credential Manager 交互及 SSH askpass 禁用,并说明可信助手的适用范围。 - 通过真实 Git 与隔离 HTTP 认证测试验证开启、默认和关闭路径;165 项模块测试及 check:changed 通过。
ApprovabilityVerdict: Approved at Macroscope's review found this PR approvable — Adds an explicit opt-in for background and workspace Git fetches to retain a server-configured credential helper. Existing defaults and other prompt restrictions remain unchanged, with documentation requiring a non-interactive helper. You can add or adjust custom eligibility rules. Learn more. |
|
Note Reviews pausedIt looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the
Use the following commands to manage reviews:
Use the checkboxes below for quick actions:
No actionable comments were generated in the recent review. Walkthrough
Merge Risk:
|
# Conflicts: # apps/server/src/vcs/GitVcsDriverCore.test.ts
|
Note Written by merged current main ( one conflict, in verification:
earlier verification from the prior round (real dev server, private https remote, codex turn) still describes the unchanged production code. unverified: native windows and an actual coder deployment. |
|
Note Written by Verified in a real dev environmentverified as-is at added a project through the app pointing at a real private github repository with configured credential helpers disabled and a trusted inherited askpass helper. selected codex
main, same repository and prompt: pr, same repository and prompt: retrying the failed thread after re-enabling the option: Not verifiednative desktop, ios/android, macos/windows, and an actual coder deployment were not exercised on this linux vm. the real provider path covered codex only. ssh interactive prompting was not attempted; its disabled environment was observed. the recording shows the interaction sequence, not a performance measurement. |
…rve-git-askpass # Conflicts: # apps/server/src/vcs/GitVcsDriverCore.test.ts
Dismissing prior approval to re-evaluate b34f692
- 合并主线的 Git 路径处理改动,保留现有凭据助手测试。 - 解决测试导入冲突,不改写维护者已有提交。
|
Merged main e455200 into this branch in 4369f5d, preserving the maintainer's askpass fixes and verification history. Resolved the test-import conflict with main's path handling and removed the obsolete NodeOS import. check:changed passed (format, lint, both knip checks, GraphQL, three affected-package typechecks, and 242 tests in two files). On macOS the first run exposed an unrelated main test comparing Git's canonical /private path against /var; the successful run used canonical TMPDIR=/private/tmp without changing production code or weakening that test. Earlier private-HTTPS/askpass verification remains linked in the PR description. |
…rve-git-askpass # Conflicts: # apps/server/src/vcs/GitVcsDriverCore.test.ts
Replace the HTTP-server integration test with a fetchRemote assertion in the existing environment-log test, and tighten the user docs paragraph. AI-assisted; verified with the tests and tools listed above.
Dismissing prior approval to re-evaluate d659634
EvidenceReal web client and server; Chromium, 1280×800, light theme, fresh databases, synthetic private HTTPS remote. Both servers inherit the same non-interactive askpass helper with
The comparison exited 0: base fails and head passes. Restarting head with the option unset restores the authentication failure: control recording. Scenario · HTTPS fixture · Driver · Proof JSON Filesystem prefixes are redacted; the head recording masks a read-tool row containing internal paths. Its branch-naming warning comes from disabling generated naming in the fixture and does not prevent worktree preparation or agent completion. AI-assisted; verified with the tests and tools listed above. Not shown:
|





Problem and scope
Fixes https://git.cafe/pingdotgg/t3code/issues/23044. T3 deliberately clears askpass variables during background and workspace-preparation fetches to avoid interactive prompts. In environments such as Coder, an inherited
GIT_ASKPASScan instead be the existing non-interactive credential source; clearing it makes worktree preparation fail before the agent starts.This is a focused configuration option for an established capability under CONTRIBUTING.md: no new credential store, provider, workflow, or default change. Set
T3CODE_GIT_PRESERVE_ASKPASS=1in the server environment to preserve its inherited Git askpass helper for both fetch paths. Unset/other values retain today's behavior. Terminal prompting, GCM interaction, and SSH askpass remain disabled. Documentation warns that the operator must choose a trusted non-interactive helper; T3 cannot stop an opted-in helper from opening its own dialog.Git documents askpass independently of terminal prompting in gitcredentials and GIT_TERMINAL_PROMPT.
Verification
The new integration test uses real Git, a throwaway repository, a loopback HTTP endpoint requiring fixture-only Basic credentials, and a disposable askpass script. Repository configuration disables the developer's credential helpers and proxy. No real credentials or external repository are used.
Git could not authenticate with the remote(exit 128).0disables the helper again. The existing background-fetch environment test now covers both opt-in states and verifies that the other four non-interactive controls stay unchanged.vp test run apps/server/src/vcs/GitVcsDriverCore.test.ts: all 165 tests pass viacheck:changed.vp run check:changed: formatting, lint, knip, GraphQL validation, scoped typechecks, and the affected test file all pass. Existing unrelated lint warnings remain unchanged.This is server-side fetch configuration; no web, desktop, or mobile rendering changes or UI screenshots are needed. All clients that request workspace preparation use the same server path.
Model: GPT-5-based Codex. Harness: Codex desktop app.
Fixes #23044