Skip to content

feat: add client-side TLS support for Vault gRPC connection#25

Draft
jh-lee-cryptolab wants to merge 6 commits intomainfrom
feat/vault-tls-client
Draft

feat: add client-side TLS support for Vault gRPC connection#25
jh-lee-cryptolab wants to merge 6 commits intomainfrom
feat/vault-tls-client

Conversation

@jh-lee-cryptolab
Copy link
Contributor

@jh-lee-cryptolab jh-lee-cryptolab commented Mar 4, 2026

Summary

  • Add TLS support to the Vault gRPC client with three modes: self-signed CA, public CA (system default), and plaintext (dev only)
  • Propagate ca_cert and tls_disable settings through config, env vars, and server initialization
  • Align TLS setup instructions in both rune/configure.toml and claude/configure.md with detailed follow-up prompts, error handling, and completion summary

Changed files

  • mcp/adapter/vault_client.pysecure_channel with optional custom CA, insecure_channel only when tls_disable=true
  • mcp/server/server.py — Thread TLS params through fetch_keys_from_vault and VaultClient init
  • agents/common/config.py — Parse/save ca_cert and tls_disable in VaultConfig
  • config/config.template.json — Add ca_cert and tls_disable fields
  • commands/claude/configure.md — TLS question flow with self-signed, public CA, no-TLS options
  • commands/rune/configure.toml — Same TLS detail level as configure.md
  • scripts/install.sh — Create ~/.rune/certs/ directory during install
  • mcp/tests/test_server.py — Add _ca_cert and _tls_disable to FakeVaultClient

Test plan

  • Verify VaultClient connects with system CA (public CA mode)
  • Verify VaultClient loads custom CA PEM and connects (self-signed mode)
  • Verify VaultClient falls back to insecure channel when tls_disable=true
  • Run /rune:configure and confirm TLS question flow works end-to-end

Closes #24

jh-lee-cryptolab and others added 4 commits March 4, 2026 13:11
Vault gRPC server now requires TLS by default (rune-admin #25).
Add 3-tier channel selection: insecure (VAULT_TLS_DISABLE=true),
secure with custom CA (VAULT_CA_CERT), or secure with system CA
(default). Updates VaultConfig, vault_client, server call sites,
config template, configure flow, install script, and test fixtures.

Closes #24

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…figure.md

Add follow-up prompts, error handling, descriptive labels, and Vault TLS
status to the completion summary so both configure commands have the same
level of detail for the TLS setup flow.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Covers cleanup of previously installed versioned plugins and
the `claude plugin marketplace add ./rune` workflow.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Without this, credential collection step cannot interactively
prompt the user during /rune:configure.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@jh-lee-cryptolab jh-lee-cryptolab marked this pull request as draft March 6, 2026 00:58
- _init_pipelines: forward ca_cert and tls_disable to fetch_keys_from_vault
- health_check HTTP fallback: apply CA cert / tls_disable to httpx client

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Reorder credential collection (enVector first, Vault second) and add
TLS configuration options to match commands/claude/configure.md.
Also clean up gemini-extension.json settings and hooks.json format.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@jh-lee-cryptolab
Copy link
Contributor Author

All paths verified in claude. Gemini and codex should be verified.

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.

feat: Support TLS for Vault gRPC connection (client-side)

1 participant