Skip to content

feat(exec): gate interactivity on stdin so piped stdout still prompts - #1203

Closed
TheGreatAxios wants to merge 2 commits into
mainfrom
cl-9002-piped-exec
Closed

TheGreatAxios wants to merge 2 commits into
mainfrom
cl-9002-piped-exec

Conversation

@TheGreatAxios

@TheGreatAxios TheGreatAxios commented Sep 28, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

  • Exec resolves operator presence from stdin alone, so a piped stdout keeps permission prompts on stderr while stdout carries only command output
  • Headless deny reasons name the missing channel (stdin is not a TTY); auto-deny rule names stay stable
  • Ships Option A: stdin-present means an operator is present

Verification

  • Critic follow-up (fb9af7a): pinned the undefined-stdio keeper cases — (undefined, undefined) headless+piped, (undefined, true) non-interactive+unpiped, (true, undefined) interactive+piped
  • Synced docs to Option A: docs/PRODUCT.md exec section + operator-in-the-loop item, docs/ARCHITECTURE.md Exec Runner deltas (piped stdout with TTY stdin stays interactive, prompts on stderr)
  • Ran bun install inside the worktree to pick up the origin/main oauth-core 0.2.0 pin; the earlier symlinked-node_modules load skew is gone
  • bun test src/exec/runner.test.ts passes (32 pass, 0 fail)
  • bun test src/permission passes (594 pass, 0 fail, 19 files)
  • bun run typecheck clean; bun run lint clean (oxfmt + oxlint, 0 warnings)

Fixes CL-9002

@linear-code

linear-code Bot commented Sep 28, 2026

Copy link
Copy Markdown

CL-9002

@TheGreatAxios

Copy link
Copy Markdown
Collaborator Author

Closing after the 0333 merge wave: rebase onto origin/main hit conflicts, and parent guidance is not to fight those. Reopen on a fresh branch if this still improves operator output without regression.

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant