Skip to content

release: 2.3.0 — accounts info - #102

Merged
StuartMeeks merged 1 commit into
mainfrom
feat/accounts-info
Oct 13, 2026
Merged

StuartMeeks merged 1 commit into
mainfrom
feat/accounts-info

Conversation

@StuartMeeks

Copy link
Copy Markdown
Owner

Adds an accounts info command and releases it as 2.3.0.

What it shows

Backend                Encrypted files
Credentials directory  /home/me/.my-cli/credentials
Directory permissions  0700 (owner only)
Encryption             AES-256-GCM (data key sealed with PBKDF2-HMAC-SHA256)
Keystore               /home/me/.my-cli/credentials/.keystore
Key binding            None (default; portable, protected by directory permissions)
Selections file        /home/me/.my-cli/credentials/selections.json
Library version        2.3.0
Platform               Ubuntu 26.04.1 LTS (ubuntu.26.04-x64)
  • DPAPI stores show Windows DPAPI (current user scope). A custom ICredentialEncryption shows its type name. Keychain and libsecret show the app identifier, plus the collection for libsecret.
  • AdditionalEntropy is shown only as set or not set, never the value.
  • A yellow warning appears when the directory is open to group or other users (Unix), or inherits its ACL (Windows). Those permissions are the default store's only protection.

Design notes

  • It describes the store that was actually resolved, not CredentialStoreOptions. So it is right for the README's hand-registered DPAPI setup, where there are no options to read. It also shows when a custom encryption registered in the wrong order was silently ignored.
  • It never decrypts or queries Keychain/libsecret, so it can't trigger an unlock prompt.
  • Values are written unwrapped. Spectre's table layout split long paths with real newlines, which broke copy-paste.
  • Backends gain internal getters only. No provider-facing interface changes.

Release

  • Version is 2.3.0 and the CHANGELOG has a [2.3.0] section.
  • Tag v2.3.0 after merge to publish.

Testing

  • New CredentialStoreDescriberTests.
  • Full suite passes locally on net8.0 and net10.0 (Linux).
  • Ran end to end in a scratch CLI.
  • The DPAPI, Windows ACL, Keychain and libsecret output was not run locally. The Windows CI leg runs the ACL test.

🤖 Generated with Claude Code

Add `accounts info`, which shows where and how credentials are stored:
backend, credentials directory / keystore / selections paths, encryption
(AES-256-GCM, DPAPI, or a custom type's name), whether AdditionalEntropy
is set (presence only), and the directory's permissions, warning when
they reach beyond the owner. Keychain and libsecret show their app
identifier (and collection).

It describes the resolved ICredentialManager rather than
CredentialStoreOptions, so it is right for the README's hand-registered
DPAPI store and exposes a custom ICredentialEncryption registered in the
wrong order. It never decrypts or queries an OS secret store, so it
cannot prompt. Values are written unwrapped so long paths copy-paste.

Minor: a new public command type, no provider-facing interface change.
Bumps Version to 2.3.0 and cuts the CHANGELOG section.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Comment thread src/NextIteration.SpectreConsole.Auth/Commands/CredentialStoreInfoCommand.cs Dismissed
@StuartMeeks
StuartMeeks merged commit 01ee346 into main Oct 13, 2026
11 checks passed
@StuartMeeks
StuartMeeks deleted the feat/accounts-info branch October 13, 2026 00:53
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.

2 participants