Conversation
Contributor
There was a problem hiding this comment.
🤖 AI Review
Both independent reviews completed. After deduplication, all seven findings are confirmed. The most consequential issues are a silent no-op for text output with redirected stdout and a shared-helper change that unintentionally alters confirmation behavior across unrelated machine-mode commands. The literal -o json example from Claude is not affected because it uses the text layer; the confirmed regression applies to --output-format json|stream-json.
Findings
| Severity | Location | Category | Sources | Claim |
|---|---|---|---|---|
| 🟠 MAJOR | apps/cli/src/commands/config/push/push.handler.ts:290 |
correctness |
claude | With text output, TTY stdin, and redirected stdout, each changed resource is silently skipped after its “Updating … service with config:” diagnostic, and the command exits successfully without a prompt or skip summary. |
| 🟠 MAJOR | apps/cli/src/command-internal/prompt-yes-no.ts:45 |
behavioral-regression |
claude+codex | The config-push fix changes every default-interactive promptYesNo caller in `--output-format json |
| 🟡 MINOR | apps/cli/src/commands/config/push/push.e2e.test.ts:96 |
test-coverage |
claude | The new subprocess test does not prove that piped consent is honored because it supplies n, which produces the same skipped result as ignoring stdin and applying the machine-mode false default. |
| 🟡 MINOR | apps/cli/src/commands/config/pull/SIDE_EFFECTS.md:6 |
documentation |
claude | The config-pull compatibility document incorrectly says JSON modes return the confirmation default without reading stdin, although the shared helper now reads and honors piped answers. |
| 🟡 MINOR | apps/cli/src/commands/config/push/push.integration.test.ts:361 |
test-coverage |
claude | The integration fixture commonly combines text output marked interactive with stdoutIsTty=false, an impossible production state that obscures redirected-stdout behavior. |
| ⚪ NIT | apps/cli/src/commands/config/push/SIDE_EFFECTS.md:177 |
documentation |
claude | The consent documentation omits the text-output case where stdin is a TTY but stdout is redirected, even though that case silently defaults and skips without rendering a prompt. |
| ⚪ NIT | apps/cli/src/command-internal/prompt-yes-no.ts:41 |
consistency |
claude | Machine-mode confirmation diagnostics are asymmetric: --yes echoes the question and answer to stderr, while an answer consumed from piped stdin is silent. |
Findings outside the diff
- 🟡 MINOR
apps/cli/src/commands/config/pull/SIDE_EFFECTS.md:6— The config-pull compatibility document incorrectly says JSON modes return the confirmation default without reading stdin, although the shared helper now reads and honors piped answers. - 🟡 MINOR
apps/cli/src/commands/config/push/push.integration.test.ts:361— The integration fixture commonly combines text output marked interactive with stdoutIsTty=false, an impossible production state that obscures redirected-stdout behavior.
Stats
Claude findings: 7 · Codex findings: 1 · Confirmed: 7 · Refuted: 0 · Uncertain: 0
Models: claude-opus-5 + gpt-5.6-sol · Trigger: auto · Workflow run
This review runs once per PR. A maintainer can request another with a /ai-review comment.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
TL;DR
Fixes
config pushapplying remote changes after a pipednin agent mode.whats wrong?
JSON/stream-json confirmations return the default before reading stdin. With
config pushdefaulting to yes, an explicit decline is ignored.now fixed by
Honor piped answers in machine output and require affirmative input or
--yes/SUPABASE_YESfor unattended updates. Interactive text confirmations retain their yes default.ref:
config pushapplies remote changes despite an explicit piped "n" when agent mode is auto-detected #6657