vkv v1.0.0
First stable release of vkv. This release adds full secret version history support, makes the machine-readable export formats flat and re-importable, and modernizes the toolchain:
✨ Highlights
--all-versions— export every version of a KVv2 secret. vkv export --all-versions now returns the full version history (not just the latest), supported by the base, json and yaml formats. Each version shows its creation time, status (created / deleted / destroyed) and the secret's custom metadata- Creation time in the default tree. The base output now shows when each secret's current version was created, next to the version marker: admin [v=1] (created 5 minutes ago).
- Colorized tree output. Path elements are now bold, version/age annotations are cyan, and metadata is dimmed. Colors are automatically disabled when output is piped or redirected, so scripting is unaffected.
- yaml / json export now uses flat, full secret-path keys (no engine root, no nested indentation):
# before # after
secret/: admin:
admin: user: password
user: password sub/demo:
sub/: user: admin
demo:
user: admin
- If you parse
vkv export -f yaml|jsonoutput downstream, update your consumers. vkv import reads both the new flat format and the legacy nested format, so export | import round-trips cleanly. - yaml / json always export real (unmasked) values — these formsumption and re-import.
--merge-pathsis now a no-op for yaml/json (they're already flat); it still applies to the template format.- Go 1.25.0 is now required to build from source.
🧹 Improvements & maintenance
- Updated dependencies to their latest compatible versions (vaufang, fatih/color, testcontainers-go, golangci-lint, …).
- Refreshed documentation and examples (export, import, quickstart, sops, and the CLI reference) to match the new output.
📝 Notes
vkv importwrites secret data only — it does not restore version history or custom metadata. Use vkv export --all-versions or snapshots to capture full history.
Changelog
New Features
- e4d6c34: feat(export): --all-versions, flat yaml/json output and colorized tree (#469) (@FalcoSuessgott)
- aae8d88: feat(mcp): add MCP server (@FalcoSuessgott)
- 276f366: feat(test): run tests against the last 3 major Vault versions (@FalcoSuessgott)
Bug fixes
- fc22d49: fix(ci): filter for v1 tests (@FalcoSuessgott)
Dependency updates
- 0aea68d: feat(deps): bump alpine from 3.22 to 3.23 (@dependabot[bot])
- 4dfdf1a: feat(deps): bump github.com/charmbracelet/fang from 0.3.0 to 0.4.0 (@dependabot[bot])
- 349da44: feat(deps): bump github.com/charmbracelet/fang from 0.4.0 to 0.4.1 (@dependabot[bot])
- 5dc7c58: feat(deps): bump github.com/charmbracelet/fang from 0.4.1 to 0.4.2 (@dependabot[bot])
- dc76d1c: feat(deps): bump github.com/charmbracelet/fang from 0.4.2 to 0.4.3 (@dependabot[bot])
- 1520158: feat(deps): bump github.com/daixiang0/gci from 0.13.6 to 0.13.7 (@dependabot[bot])
- f8a72fd: feat(deps): bump github.com/daixiang0/gci from 0.13.7 to 0.14.0 (@dependabot[bot])
- e080361: feat(deps): bump github.com/golangci/golangci-lint/v2 (@dependabot[bot])
- d14edd8: feat(deps): bump github.com/golangci/golangci-lint/v2 (@dependabot[bot])
- 2478982: feat(deps): bump github.com/golangci/golangci-lint/v2 (@dependabot[bot])
- 1a63950: feat(deps): bump github.com/golangci/golangci-lint/v2 (@dependabot[bot])
- cf43bc8: feat(deps): bump github.com/golangci/golangci-lint/v2 (@dependabot[bot])
- 71e3cc3: feat(deps): bump github.com/golangci/golangci-lint/v2 (@dependabot[bot])
- b1dad2e: feat(deps): bump github.com/golangci/golangci-lint/v2 (@dependabot[bot])
- f7ce00a: feat(deps): bump github.com/golangci/golangci-lint/v2 (@dependabot[bot])
- 4334d78: feat(deps): bump github.com/golangci/golangci-lint/v2 (@dependabot[bot])
- f5494cc: feat(deps): bump github.com/golangci/golangci-lint/v2 (@dependabot[bot])
- 92fe387: feat(deps): bump github.com/golangci/golangci-lint/v2 (@dependabot[bot])
- 05d1a00: feat(deps): bump github.com/hashicorp/vault/api from 1.20.0 to 1.21.0 (@dependabot[bot])
- 8882d37: feat(deps): bump github.com/hashicorp/vault/api from 1.21.0 to 1.22.0 (@dependabot[bot])
- 44dca04: feat(deps): bump github.com/mark3labs/mcp-go from 0.36.0 to 0.37.0 (@dependabot[bot])
- 8aa1cfe: feat(deps): bump github.com/mark3labs/mcp-go from 0.37.0 to 0.38.0 (@dependabot[bot])
- d613c2b: feat(deps): bump github.com/mark3labs/mcp-go from 0.38.0 to 0.39.1 (@dependabot[bot])
- 52f230e: feat(deps): bump github.com/mark3labs/mcp-go from 0.39.1 to 0.41.0 (@dependabot[bot])
- 45e0e45: feat(deps): bump github.com/mark3labs/mcp-go from 0.41.0 to 0.41.1 (@dependabot[bot])
- 8143db0: feat(deps): bump github.com/mark3labs/mcp-go from 0.41.1 to 0.42.0 (@dependabot[bot])
- 3f5d55f: feat(deps): bump github.com/mark3labs/mcp-go from 0.42.0 to 0.43.0 (@dependabot[bot])
- f4fd3d3: feat(deps): bump github.com/mark3labs/mcp-go from 0.43.0 to 0.43.1 (@dependabot[bot])
- 4171f67: feat(deps): bump github.com/mark3labs/mcp-go from 0.43.1 to 0.43.2 (@dependabot[bot])
- ee3eab6: feat(deps): bump github.com/mark3labs/mcp-go from 0.43.2 to 0.44.0 (@dependabot[bot])
- 9a1e59d: feat(deps): bump github.com/mark3labs/mcp-go from 0.44.0 to 0.44.1 (@dependabot[bot])
- c57f0fc: feat(deps): bump github.com/spf13/cobra from 1.10.1 to 1.10.2 (@dependabot[bot])
- 2cec9e2: feat(deps): bump github.com/spf13/cobra from 1.9.1 to 1.10.1 (@dependabot[bot])
- 0f2d77a: feat(deps): bump github.com/stretchr/testify from 1.10.0 to 1.11.1 (@dependabot[bot])
- 91d6548: feat(deps): bump github.com/testcontainers/testcontainers-go (@dependabot[bot])
- a9fea14: feat(deps): bump github.com/testcontainers/testcontainers-go (@dependabot[bot])
- db27a52: feat(deps): bump github.com/testcontainers/testcontainers-go/modules/vault (@dependabot[bot])
- 465d9f4: feat(deps): bump github.com/testcontainers/testcontainers-go/modules/vault (@dependabot[bot])
- b270c66: feat(deps): bump github.com/testcontainers/testcontainers-go/modules/vault (@dependabot[bot])
- 8a59d57: feat(deps): bump gotest.tools/gotestsum from 1.12.3 to 1.13.0 (@dependabot[bot])
- 454ad3f: feat(deps): bump mvdan.cc/gofumpt from 0.8.0 to 0.9.0 (@dependabot[bot])
- bc7f158: feat(deps): bump mvdan.cc/gofumpt from 0.9.0 to 0.9.1 (@dependabot[bot])
- d52ed31: feat(deps): bump mvdan.cc/gofumpt from 0.9.1 to 0.9.2 (@dependabot[bot])