Repository navigation
fix: mask app_secret input and guard confirm() against non-TTY crash - #1
Open
datin-antasena wants to merge 1 commit into
Open
datin-antasena wants to merge 1 commit into
datin-antasena wants to merge 1 commit into
Conversation
- Replace readline.question() for Threads App secret with readSecret() that uses raw-mode input and prints asterisks instead of echoing characters to the terminal - Add isTTY check in confirm() to prevent setRawMode crash in non-interactive environments (CI, pipes, subprocesses) - Add readSecret() utility to display.ts supporting both TTY (masked) and non-TTY (plain) modes
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.
Summary
Two fixes:
1. Mask
app_secretduringauth loginPreviously,
Threads App secret:input usedreadline.question()which echoed the secret in plain text to the terminal. Anyone looking at the screen could see the full credential.Now uses
readSecret()fromdisplay.ts— a masked input function that:*for each typed character (TTY mode)2. Fix
confirm()crash in non-TTY environmentsconfirm()calledprocess.stdin.setRawMode()without checkingprocess.stdin.isTTY. When stdin was piped or redirected (CI, subprocess),setRawModethrows an error, crashing the tool.Now checks
isTTYfirst: exits early withfalseand a log message in non-interactive mode.Changes
src/utils/display.ts: AddedreadSecret()function, addedisTTYguard toconfirm()src/commands/auth.ts: Replacedquestion()withreadSecret()for app_secret promptTesting
readSecrettested manually in TTY and non-TTY modesconfirmno longer crashes when stdin is a pipe