Fixes for the shell hook and daemon when a provider is temporarily unavailable, correct handling of import in the global config, a fix for fnox provider test against Azure Key Vault, and shell completion scripts published with each release.
Fixed
-
Shell hook retries incomplete secret loads (#839) -- @jdx. When the shell hook loaded a credential but a dependent secret failed to resolve (for example,
opexiting unsuccessfully during shell startup), the partial result was recorded as an unchanged session and later prompts skipped resolution entirely, even after the provider came back;fnox execwould succeed while the shell stayed incomplete. The hook now records incomplete loads and retries on the next invocation, resuming the normal early exit once everything resolves. The daemon also no longer caches missing values, so a recovered secret is resolved and cached normally instead of leaving a stale miss behind. Note that secrets which are persistently unavailable (including optional ones) are now retried on every prompt, which can add latency and repeat warnings until they resolve; secrets excluded from shell injection (env = false) do not trigger retries. The daemon socket compatibility tag was bumped, so upgraded clients start a fresh daemon rather than reusing an old one that still caches misses. -
Daemon cache hits keep provider dependencies available (#838) -- @jdx. With the daemon enabled, a secret whose provider depends on another secret (such as a 1Password provider needing a cached
OP_SERVICE_ACCOUNT_TOKEN) could fail to resolve when the credential was a cache hit but the dependent secret was not (e.g.daemon_cache = false). Cached values are now passed through when resolving misses so dependency ordering still works, and only provider-declared environment dependencies are exposed during resolution, so unrelated cached secrets are not leaked into the environment. -
Global config
importentries are now loaded (#818) -- @JoacoEsteban.fnox getand other commands ignored theimportfield in~/.config/fnox/config.toml, so secrets and providers from imported files were only available when passing--configexplicitly. Imports are now expanded when the global config is loaded (imports form the base, with the global file merged on top), andfnox config-fileslists the imported files as well. A missing global import is reported as an error. -
fnox provider testsucceeds for Azure Key Vault vaults without the probe secret (#829) -- @any-victor. Theazure-smconnection test reads a hard-codedfnox-test-secret, and a valid, accessible vault that did not contain it was reported as a failed connection. A404with theSecretNotFoundservice code is now treated as a successful probe, while401/403still report authentication failures and other404s (including a missing vault) and transport errors still report API failures.
Added
- Shell completion scripts shipped with releases (#814) -- @jdx. Native Bash, Zsh, Fish, and PowerShell completion scripts are now generated from the release binary, uploaded as release assets alongside
fnox.usage.kdl, and declared as completion resources in the signed packslip so installers such as mise can register completions automatically. The scripts callfnoxitself and do not require a separateusageexecutable.
Changed
- Documentation overhaul (#817) -- @jdx. The docs site has been redesigned with task-based navigation, a new landing page, and light/dark themes. Guides for onboarding, providers, configuration, authentication, caching, and migration were rewritten and corrected (for example, the JSON migration example now extracts
.secretsbefore import, and profile examples placeif_missingon individual secrets), with new troubleshooting and Passwordstate guides and examples plus related links for every CLI command.
New Contributors
- @any-victor made their first contribution in #829
- @JoacoEsteban made their first contribution in #818
Full Changelog: v1.35.1...v1.35.2
💚 Sponsor fnox
fnox is built and maintained by @jdx, an open source developer at entire.io, the title sponsor of his open source work.
If fnox handles secrets or config for you or your team, please consider becoming an individual or company sponsor. Your support funds ongoing development and helps keep fnox secure, free, and independent.