hashicorp/vault
How to contribute
This section is the contributor guide. The canonical sources are CONTRIBUTING.md (PR/issue process) and README.md (build, test, run); these pages summarize them and then go deeper into patterns the team uses.
Picking up work
- Issues: each PR should reference an existing GitHub issue, except for trivial fixes. If no issue exists yet, open one first to coordinate. The lifecycle and triage rules are in
CONTRIBUTING.md. - Discuss: for design-heavy changes, post on the Vault discussion forum before writing code.
- Stale issues: closed automatically after 30 days without activity. Don't be shy about reopening if the problem still applies.
Pull request expectations
Every PR ships:
- A description that explains what, how, and why.
- Tests — unit tests for logic changes, acceptance tests if you touch a backend with external dependencies.
- A changelog entry under
changelog/<PR_ID>.txtusing therelease-note:CATEGORYsyntax. Categories aresecurity,change,feature,improvement,bug. SeeCONTRIBUTING.mdfor examples. - Sign the CLA — required for non-HashiCorp contributors.
- Consistent style —
make fmtcheckandmake lintmust pass.
The code-review bot checks the changelog format automatically (.github/workflows/changelog-checker.yml).
Workflow at a glance
- Open or claim an issue.
- Branch from
main(or the appropriaterelease/x.ybranch for backports). - Implement and add tests.
- Run
make fmt,make lint, and the relevantmake testtargets locally. - Create the changelog file under
changelog/. - Open the PR, expect review, address feedback.
- A maintainer merges; backports to active release branches happen via the
Vault Automationbot.
See Development workflow for the day-to-day commands and Testing for which test target to run when.
Definition of done
Vault sets a high bar:
- New CLI commands have integration tests that actually run them.
- New API endpoints update the OpenAPI spec generation in
sdk/framework/openapi.go. - New plugin types follow the v5 protocol in
sdk/plugin/plugin_v5.go. - New configuration fields are wired into both HCL parsing (
internalshared/configutil/) and thevault operator diagnosechecks (command/operator_diagnose.go). - Anything that touches storage updates the migration logic in
vault/init.goif the layout changes. - UI changes have ember-cli tests and pass
pnpm test.
Subtopics
- Development workflow — branches, commits, the local feedback loop
- Testing — unit, acceptance, Enos, UI test conventions
- Debugging — logs, race detectors, deadlock detection
- Patterns and conventions — error handling, logging, request flow, Enterprise stubs
- Tooling — Makefile, golangci-lint, copywrite, generators
Built by Factory AutoWiki from public repository content. It is a generated preview for codebase exploration, not source-maintained documentation.