Repository navigation
No-paste credential terminal for the paper lane: hidden-prompt store, read-only paper rate-limit probe - #203
Merged
seathatflowsinourveins merged 3 commits intoSep 24, 2026
Conversation
…e limits read-only; live keys never stored tools/credentials/open_credential_terminal.sh opens a new terminal window (Windows Terminal on WSL2, Terminal.app on macOS, an X terminal on Linux) for credential work that never passes through an agent, chat, command line or shell history. - set_credential.py stores operator-supplied inventory entries: hidden input (refuses when input cannot be hidden), 'export NAME=value' lines, 0600 file in the 0700 store via an O_NOFOLLOW directory handle, hidden 'replace' confirmation. - alpaca_rate_limit_probe.py sends one read-only GET /v2/account to the fixed host, no redirects, no body read, and saves only status + x-ratelimit-* headers. - Live keys are never stored (alpaca-live is interactive_only): --live-rate-limit types the pair for one probe and discards it; the probe refuses --env-file for live and refuses without a terminal. - The window prints the checkout commit and refuses if the credential tools have uncommitted changes; it clears PYTHONPATH/LD_PRELOAD/BASH_ENV and runs python3 -I. Independent review findings (1 high, 2 medium, 12 low) addressed; 52 tests. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
…tside this repository) Removes the live rate-limit mode and the alpaca-live inventory entry. The probe is paper-only (fixed paper host, stored alpaca-paper key; agents may run it with --env-file "$PAPER_ENV_FILE"). The launcher stores operator-supplied entries with hidden prompts and --probe applies only to alpaca-paper. Verified: the paper probe reports x-ratelimit-limit 200 (HTTP 200) on this host's dedicated paper account. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
…e checker exit, launcher order) - set_credential.py and alpaca_rate_limit_probe.py re-exec themselves with python3 -I when run directly, so a poisoned PYTHONPATH cannot shadow getpass/urllib (test plants fake modules and asserts none is imported). - credential_status.py exits 1 when ANY existing credential file is unsafe (not only required ones); unsafe_stored added, unsafe_required kept for consumers; missing optional entries stay informational (tested). - Launcher validates paths before creating directories, warns when not in a git checkout, and no longer claims a backgrounded X-terminal launch was confirmed. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
Collaborator
Author
|
Follow-up independent review (redesign): no high or medium findings remain. It confirmed that no tool prints a stored value and that every finding from the first round is resolved. Its new low and info items are handled in
The live mode reviewed in round 1 was removed entirely in |
seathatflowsinourveins
deleted the
claude/credential-terminal-20260924
branch
September 24, 2026 18:56
seathatflowsinourveins
added a commit
that referenced
this pull request
Sep 24, 2026
… fill-precision branch Conflicts were registries and counts only: took main's copies, regenerated the rate-limit evidence (1693 trading, 16 data headers), re-pinned this branch's five sources in source-hashes.json and re-registered its files in the evidence manifest. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
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.
Seamless, no-paste credential practice for the paper lane. Keys go from the operator's keyboard straight into the per-host store. They never pass through an agent, a chat, a command line or shell history.
Tools (
tools/credentials/)open_credential_terminal.sh <entry-id> [--probe]opens a new terminal window: Windows Terminal on WSL2, a console window as fallback, Terminal.app on macOS, or an X terminal on Linux. If none is available, it prints the one command to run. The window runs a generated session script that holds commands only and deletes itself on exit. Before anything is typed, the script:PYTHONPATH,LD_PRELOAD,BASH_ENVand similar variables;-I.Paths and the distro name are validated before they reach
cmd.exeorwt.exe, the window starts withwsl.exe -u <user> --exec, and a failed launch is reported.set_credential.py <entry-id>accepts only operator-supplied stored entries (required, optional or paid) whose file sits directly in the store.export NAME=valuelines, the documented format that every parser accepts.O_DIRECTORY|O_NOFOLLOWhandle.replace.~, non-ASCII or shell-special characters is refused.alpaca_rate_limit_probe.pyis a paper-only read-only probe.GET /v2/accountto the fixed paper host, follows no redirect and reads no body.x-ratelimit-*headers, writing any result file via a temp file and replace.--env-file "$PAPER_ENV_FILE".Scope. Live broker keys are out of scope for this repository; live trading is handled outside it. An earlier draft of this branch had a live mode, and the independent review's high finding on it has been removed together with the mode. The
alpaca-paperinventory note records the scope.Verification
tests.test_credential_tools,tests.test_credential_status,tests.test_secret_path_guard), run with fake values only. They include:validate.pyandevidence_manifest.py --checkpass; only the sha256 and byte counts of the two changed registered files were updated.x-ratelimit-limit: 200(199 remaining).Review. The first independent review raised 1 high, 2 medium and 12 low findings, all addressed. The high one was live keys at rest, now removed with the live scope. A follow-up review of the redesign is in progress; its findings will be applied before merge.
🤖 Generated with Claude Code