-
Notifications
You must be signed in to change notification settings - Fork 2.8k
Closed
Description
Describe the bug
Headers for streamable_http extensions are stored in plaintext in the config.yaml file instead of being securely stored, e.g. in the system keychain. Some headers contain sensitive credentials (e.g., Personal Access Tokens, API keys).
To Reproduce
Steps to reproduce the behavior:
- Install a third-party extension (e.g., GitHub MCP extension) with authentication headers
- Add an Authorization header with a PAT:
Authorization: Bearer github_pat_xxxxx - Save the extension configuration
- Open
~/.config/goose/config.yaml - Observe the PAT is stored in plaintext
Expected behavior
Header values should be stored securely, similar to how environment variables are handled.
Screenshots
Example from config.yaml showing plaintext token:
extensions:
github:
headers:
Authorization: Bearer github_pat_11ARRU44Y0Cf5xSzEaM83L_[REDACTED]
**Please provide following information:**
- **OS & Arch:** macOS
- **Interface:** UI
- **Version:** v1.12.1
- **Extensions enabled:** Developer. Todo, Extension Manager, GitHub
- **Provider & Model:** n/a
**Additional context**
Could address issue #4307's security concerns by using automatic keychain storageReactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels