Conversation
Teams on the left, their vaults in the middle, and the selected vault's
detail on the right across three tabs: secret names, who can decrypt,
and the audit trail.
It never handles plaintext, and that is the point rather than a
limitation. The server only ever holds ciphertext and this keeps it that
way: no decryption key is fetched, none is unwrapped, and there is no
keybinding that would. The secrets tab says so on screen and points at
`logicsrc teams pull`, because otherwise the first thing anyone does is
hunt for a reveal key. A value that can appear on screen can appear in a
screen share, a scrollback buffer or a recording; names are what you
need to navigate, values are what you rarely need to look at.
Names, fingerprints and versions are enough to answer the questions you
actually open this for: does the vault exist, has the rotation landed,
and who can still read it.
Notes on the shape:
- Vaults and detail load lazily, because each is a round trip. The
three detail calls are settled independently, so a member without
decryption access still sees the vault's shape and a missing audit
endpoint does not blank the secrets list.
- Changing team resets the vault selection. The old index means
nothing in a different team's list, and keeping it silently selects
an unrelated vault.
- The secrets table shows a date rather than a timestamp. Three fixed
columns plus a name that can run to thirty characters leaves no room,
and a truncated clock looks like data while telling you nothing.
- The audit table gives its widest floor to the action, not the actor:
an email truncates to something recognisable, where "secrets…" could
be put, get or delete.
The view is split from the loader so it renders headlessly without an
authenticated client or a terminal. 17 tests cover that, including one
asserting no ciphertext reaches the screen; 226 pass across the CLI.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017Df2FNu5DhinMV2soRz3cy
ThreatCrush Security Scan21 finding(s) HIGH/CRITICAL: 3 | MEDIUM: 9 | LOW: 9
Snippets are redacted; ThreatCrush never prints matched credential material. |
|
Review the following changes in direct dependencies. Learn more about Socket for GitHub.
|
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.
Teams on the left, their vaults in the middle, and the selected vault's detail on the right across three tabs: secret names, who can decrypt, and the audit trail.
It never handles plaintext
That is the point rather than a limitation. The server only ever holds ciphertext and this keeps it that way: no decryption key is fetched, none is unwrapped, and there is no keybinding that would.
The secrets tab says so on screen and points at
logicsrc teams pull, because otherwise the first thing anyone does is hunt for a reveal key. A value that can appear on screen can appear in a screen share, a scrollback buffer or a recording. Names are what you need to navigate; values are what you rarely need to look at.Names, fingerprints and versions answer the questions you actually open this for: does the vault exist, has the rotation landed, and who can still read it.
Shape
2026-09-0…) looks like data while telling you nothing the date did not.secrets…could be put, get or delete.Testing
The view is split from the loader so it renders headlessly with no authenticated client and no terminal. 17 tests, including one asserting no ciphertext reaches the screen. 226 pass across the CLI suite.
Notes
@profullstack/hqtui^0.3.0, loaded lazily with the same Node 22.6 fallback message the CoinPay finances TUI uses.logicsrc vaultcommand; that name belongs to the OpenCreds personal vault. The team vaults these browse live underteams, so the command went there.packages/cli/src/context.tshas a pre-existing typecheck error (@logicsrc/opencontext/commandsunresolved). It reproduces on a clean HEAD and is untouched here.🤖 Generated with Claude Code
https://claude.ai/code/session_017Df2FNu5DhinMV2soRz3cy