Skip to content

Tags: Infisical/agent-vault

Tags

v0.39.1

Toggle v0.39.1's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
feat(catalog): add 13 service templates and fix four incorrect ones (#…

…361)

## Summary

Brings the built-in service catalog closer to Infisical's
proxied-service templates. Four files: `internal/catalog/catalog.go`,
`internal/catalog/catalog_test.go` (new), `cmd/catalog.go`,
`web/src/pages/vault/ServicesTab.tsx`.

### New templates (13)

Every host and auth header checked against the vendor's current docs.

| Template | Host | Auth |
|---|---|---|
| `cohere` | `api.cohere.com` | bearer |
| `deepseek` | `api.deepseek.com` | bearer |
| `discord` | `discord.com/api/*` | api-key, `Authorization: Bot ` |
| `fireworks` | `api.fireworks.ai` | bearer |
| `gemini` | `generativelanguage.googleapis.com` | api-key,
`x-goog-api-key` |
| `gitlab` | `gitlab.com/api/*` | api-key, `PRIVATE-TOKEN` |
| `groq` | `api.groq.com` | bearer |
| `mistral` | `api.mistral.ai` | bearer |
| `openrouter` | `openrouter.ai` | bearer |
| `perplexity` | `api.perplexity.ai` | bearer |
| `telegram` | `api.telegram.org` | passthrough + `path` substitution |
| `together` | `api.together.ai` | bearer |
| `xai` | `api.x.ai` | bearer |

### Fixed templates (4)

The first three were `bearer`, but none of those services accept
`Authorization: Bearer <key>`.

| Template | Was | Now |
|---|---|---|
| `linear` | `bearer` | api-key on `Authorization`, no prefix (Linear
wants the bare token) |
| `supabase` | `bearer` | api-key on `apikey` |
| `pagerduty` | `bearer` | custom header `Token token={{ PAGERDUTY_TOKEN
}}` |
| `stripe` | key `STRIPE_KEY` | key `STRIPE_SECRET_KEY` |

`pagerduty` needs `custom` because an api-key prefix cannot produce
`Token token=<key>`: `Auth.Resolve` concatenates the prefix verbatim,
with no room for the trailing `=`.

Heads up on `stripe`: a vault already holding a `STRIPE_KEY` credential
will stop getting the "unused credential, add Stripe as a service?"
suggestion, since that matches on `suggested_credential_key`.

### `catalog.Template` gains two fields

`Headers` seeds custom auth, `Substitutions` seeds the substitution
editor independent of auth type. This lets a preset broker a credential
that does not travel in a constructed header. `telegram` is the only
such template: its token is a URL path segment
(`/bot<token>/sendMessage`).

Side effect worth noting: selecting a `custom` preset now produces a
submittable form. Previously `applyPreset` set the auth type but left
the header rows blank, so `canSubmit` always failed.

### `agent-vault catalog` output

Renders `passthrough + substitution` when a template carries one.
Without it, `telegram` showed as bare `passthrough`, which reads as "no
credential involved" and would lead someone configuring by hand to omit
the substitution and get no injection.

## Type of change

- [x] Bug fix
- [x] New feature
- [ ] Refactor / cleanup
- [ ] Documentation
- [ ] CI / build

## Test plan

New `catalog_test.go` runs every template through the same mapping
`applyPreset` uses and validates the result, so a preset that would
produce an unsubmittable form or a rejected proposal fails the build.
One test covers Telegram's `<id>:<token>` surviving path escaping.

Manually verified against a local instance:

- All 35 templates accepted by the real HTTP ingest via `vault service
add --file`
- Real proxy traffic against a loopback echo server confirmed what
upstreams receive: `Token token=...`, `Bot <token>`, bare
`Authorization: lin_api_...`, `apikey: ...`, `PRIVATE-TOKEN: ...`, and
Telegram's rewritten path
- Browser click-through of every changed preset, plus the
credential-suggestion deep link (`?preset=openrouter`)

- [x] Existing tests pass (`make test`)
- [x] Added/updated tests for new behavior
- [x] Manual testing (describe below)

## Security checklist

- [x] No secrets or credentials in code
- [x] No new unauthenticated endpoints
- [x] Input validation on new API surfaces
- [x] Checked for OWASP top 10 (injection, XSS, etc.)

Co-authored-by: saif <11242541+saifsmailbox98@users.noreply.github.com>

v0.39.0

Toggle v0.39.0's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
feat: add Pi, Devin, Windsurf, Cline, and Roo Code to knownAgents (#295)

## Summary

Adds five new agents to the `knownAgents` list in `cmd/run.go` so that
`agent-vault vault run` auto-installs the Agent Vault CLI skill for
them:

| Agent | Binary name(s) | Skills directory |
|-------|---------------|-----------------|
| Pi | `pi` | `~/.pi/agent/skills/` |
| Devin CLI | `devin` | `~/.config/devin/skills/` |
| Windsurf / Devin Desktop | `windsurf`, `devin-desktop` |
`~/.codeium/windsurf/skills/` |
| Cline | `cline` | `~/.cline/skills/` |
| Roo Code | `roo` | `~/.roo/skills/` |

Skill directories were sourced from each agent's official docs/repos.
Devin CLI path confirmed via [Devin CLI skills
docs](https://docs.devin.ai/cli/extensibility/skills/overview#where-skills-live).

## Type of change

- [x] New feature

## Test plan

- [x] Existing tests pass (`make test`)
- [ ] Added/updated tests for new behavior
- [ ] Manual testing (describe below)

Full `go test ./...` passes with no failures.

## Security checklist

- [x] No secrets or credentials in code
- [x] No new unauthenticated endpoints
- [x] Input validation on new API surfaces
- [x] Checked for OWASP top 10 (injection, XSS, etc.)

Link to Devin session:
https://app.devin.ai/sessions/ceba9594661945f3b0d72dbf25928467

---------

Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-authored-by: jake <jake@infisical.com>

v0.38.0

Toggle v0.38.0's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
feat: allow users to remove themselves from a vault (#290)

## Summary

Adds `POST /v1/vaults/{name}/leave` endpoint and corresponding frontend
UI so users can remove themselves from a vault. Previously the only way
to lose vault access was for an admin to remove you or to delete the
entire vault.

**Backend** - new `handleVaultLeave` handler that revokes the caller's
own vault grant. Guards:
- Blocks the last admin from leaving (prevents orphaned vaults with no
admin)
- Blocks scoped sessions (they can't modify their own access)
- Requires an explicit grant (implicit owner access can't be "left")

**Frontend** - two entry points:
- Vault list cards show a leave icon (door-arrow) for all
explicit-membership vaults
- Users tab shows a "Leave vault" dropdown action on the current user's
row (visible to all roles, not just admins)

Both surfaces open a confirmation modal before calling the API. Leaving
from the Users tab redirects to the home page.

## Type of change

- [ ] Bug fix
- [x] New feature
- [ ] Refactor / cleanup
- [ ] Documentation
- [ ] CI / build

## Test plan

- [x] Existing tests pass (`make test`)
- [x] Added/updated tests for new behavior
- [x] Manual testing (describe below)

## Security checklist

- [x] No secrets or credentials in code
- [x] No new unauthenticated endpoints
- [x] Input validation on new API surfaces
- [x] Checked for OWASP top 10 (injection, XSS, etc.)

---------

Co-authored-by: saif <11242541+saifsmailbox98@users.noreply.github.com>

v0.37.1

Toggle v0.37.1's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
feat: add database_backend to server-start telemetry (#276)

## Summary

Adds `database_backend` property to the `av.server-start` telemetry
event to track which database backend is in use.

## Type of change

- [ ] Bug fix
- [x] New feature
- [ ] Refactor / cleanup
- [ ] Documentation
- [ ] CI / build

## Test plan

- [x] Existing tests pass (`make test`)

## Security checklist

- [x] No secrets or credentials in code
- [x] No new unauthenticated endpoints
- [x] Input validation on new API surfaces
- [x] Checked for OWASP top 10 (injection, XSS, etc.)

Co-authored-by: saif <11242541+saifsmailbox98@users.noreply.github.com>

v0.37.0

Toggle v0.37.0's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
feat: add PostgreSQL database support for production deployments (#273)

## Summary

Adds PostgreSQL as an alternative database backend so Agent Vault can
run multiple stateless instances against a shared database. Each
instance connects to the same Postgres, shares the same CA root
certificate (stored encrypted in the DB), and uses advisory locks to
prevent conflicting writes.

- `DATABASE_URL` env var (or `--database-url` flag) switches from SQLite
to Postgres
- `migrate-db` command copies all data from SQLite to Postgres in one
transaction
- GORM-based migration runner replaces embedded SQL files, with
`pg_advisory_lock` for safe concurrent startup
- CA root key stored in database (not disk) so all instances share the
same MITM cert
- Master key setup uses `ON CONFLICT DO NOTHING` + re-read for safe
multi-pod races
- `master-password` CLI commands blocked when `DATABASE_URL` is set (use
`--force` after stopping all instances)
- `owner reset` blocked when `DATABASE_URL` is set (only removes local
files, not the shared DB)
- Connection pool tunable via `DB_MAX_OPEN_CONNS`, `DB_MAX_IDLE_CONNS`,
`DB_CONN_MAX_LIFETIME`
- Health endpoint pings Postgres connection, returns 503 when
unreachable
- Full docs: Postgres guide, Kubernetes example, Docker Compose example,
Fly.io integration

## Type of change

- [ ] Bug fix
- [x] New feature
- [ ] Refactor / cleanup
- [ ] Documentation
- [ ] CI / build

## Test plan

- [x] Existing tests pass (`make test`)
- [x] Added/updated tests for new behavior
- [x] Manual testing (describe below)

Tested on:
- Local Postgres (fresh setup, migration, rollback, proxy with
credential injection, proposals)
- Docker Compose (2 replicas, cross-instance state sharing, proxy on
both instances, blocked commands inside container)
- DigitalOcean Kubernetes (2 replicas, managed Postgres, full CRUD,
agent lifecycle, CA sharing verified via cert fingerprint)
- Fly.io (2 machines, Fly Postgres with auto `DATABASE_URL`,
registration + data creation)
- Connection pool env vars with custom values
- `--database-url` CLI flag (vs env var)
- All 50 SQL-to-Go migration conversions verified against originals

## Security checklist

- [x] No secrets or credentials in code
- [x] No new unauthenticated endpoints
- [x] Input validation on new API surfaces
- [x] Checked for OWASP top 10 (injection, XSS, etc.)

---------

Co-authored-by: saif <11242541+saifsmailbox98@users.noreply.github.com>

v0.36.1

Toggle v0.36.1's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
fix: include substitution keys in credential-usage checks (#272)

## Summary

The "unused credential" suggestion and the credential-usage endpoint
only inspected auth fields (token, username, password, key, custom
headers), missing credentials referenced via URL substitutions. Services
using passthrough auth with substitutions (e.g. `ANTHROPIC_API_KEY` on
`api.anthropic.com`) appeared unused even though the proxy was actively
injecting them.

- Frontend: extracted a `serviceCredentialKeys()` helper mirroring
`Service.CredentialKeys()` from `broker.go` (switch on auth type +
substitution rollup) so the used-keys set stays in sync with the proxy's
injection logic
- Backend: credential-usage endpoint now calls `svc.CredentialKeys()`
instead of `svc.Auth.CredentialKeys()`, so the delete-confirmation
dialog also warns about substitution references

## Type of change

- [x] Bug fix
- [ ] New feature
- [ ] Refactor / cleanup
- [ ] Documentation
- [ ] CI / build

## Test plan

<!-- How did you verify this works? -->

- [x] Existing tests pass (`make test`)
- [ ] Added/updated tests for new behavior
- [x] Manual testing (describe below)

## Security checklist

- [x] No secrets or credentials in code
- [x] No new unauthenticated endpoints
- [x] Input validation on new API surfaces
- [x] Checked for OWASP top 10 (injection, XSS, etc.)

Co-authored-by: saif <11242541+saifsmailbox98@users.noreply.github.com>

v0.36.0

Toggle v0.36.0's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
feat: add anonymous usage telemetry (#270)

## Summary

Adds anonymous usage telemetry to help improve the product, following
the same pattern as the Infisical CLI.

Opt-out: `AGENT_VAULT_TELEMETRY=false` env var or `--telemetry=false`
flag. No credential values or request payloads are ever included.

## Type of change

- [ ] Bug fix
- [x] New feature
- [ ] Refactor / cleanup
- [ ] Documentation
- [ ] CI / build

## Test plan

- [x] Existing tests pass (`make test`)
- [ ] Added/updated tests for new behavior
- [ ] Manual testing (describe below)

## Security checklist

- [x] No secrets or credentials in code
- [x] No new unauthenticated endpoints
- [x] Input validation on new API surfaces
- [x] Checked for OWASP top 10 (injection, XSS, etc.)

---------

Co-authored-by: saif <11242541+saifsmailbox98@users.noreply.github.com>

v0.35.1

Toggle v0.35.1's commit message
v0.35.1

fix(broker): resolve dynamic secrets through the MITM proxy (#269)

The MITM proxy snapshotted a nil dynamic-secret resolver at attach time,
before Start() built it, so proxied requests for an Infisical dynamic
credential failed with credential_not_found. A late-binding adapter now
reads the resolver per request, so static and dynamic credentials resolve
identically.

v0.35.0

Toggle v0.35.0's commit message
Release v0.35.0

- feat(infisical): support dynamic secrets as leased credentials (#268)
- dependency, toolchain, and CI bumps

v0.34.0

Toggle v0.34.0's commit message
Release v0.34.0

- feat(web): move vault settings editing into a side drawer (#259)
- feat: switch a vault's credential store in place (#260)