v0.3.0
Forge v0.3.0 — Encrypted Secrets, Build Signing & Runtime Security
Forge is an open-source framework for building, deploying, and operating AI agents with built-in security, observability, and multi-provider LLM support. This release adds encrypted secret management, cryptographic build signing, runtime egress enforcement, and structured audit logging.
Highlights
Encrypted Secrets Management
Per-agent encrypted secret storage using AES-256-GCM with Argon2id key derivation. Each agent gets its own encrypted vault (<agent>/.forge/secrets.enc) with a global fallback (~/.forge/secrets.enc), so different agents can use different API keys without conflict.
forge secret set KEY value [--local]— store secrets in encrypted filesforge secret get KEY— retrieve decrypted values at runtimeforge secret list— list all stored secret keysforge secret delete KEY— remove a secret- Runtime passphrase prompting —
forge runprompts for passphrase interactively whenFORGE_PASSPHRASEis not set (TTY-aware, graceful fallback for CI/CD) - Smart init passphrase — first-time setup prompts twice (enter + confirm); subsequent agents prompt once and validate against the existing encrypted file
- Secret safety build stage — prevents secrets from leaking into container images during
forge build
Build Signing & Verification
Cryptographic integrity for build artifacts using Ed25519 signatures and SHA-256 checksums.
forge key generate— generate Ed25519 signing keypair (~/.forge/forge-signing.key/.pub)forge key trust <pubkey>— add a public key to the trust keyring (~/.forge/trusted-keys/)forge key list— list trusted public keys- Automatic build signing —
forge buildcomputes SHA-256 checksums for all artifacts and signs them intochecksums.json - Runtime verification —
forge runvalidateschecksums.jsonsignatures against the trust keyring before starting the agent
Runtime Egress Enforcement
Network-level security for agent HTTP requests via EgressEnforcer, an http.RoundTripper that validates every outbound request against the resolved domain allowlist.
- Three modes:
deny-all(block everything),allowlist(only configured domains),dev-open(allow all, log only) - Wildcard support:
*.github.commatches all subdomains - Capability bundles:
slack,telegram, etc. auto-expand to required domains - Always-allowed:
localhost/127.0.0.1bypass enforcement - All HTTP tools wired:
http_request,mcp_call,webhook_call,web_search_tavily,web_search_perplexity
Structured Audit Logging
NDJSON event stream for runtime observability with correlation IDs for end-to-end request tracing.
- Event types:
session_start,session_end,tool_exec,egress_allowed,egress_blocked,llm_call - Correlation IDs:
TaskIDandCorrelationIDpropagated through context andHookContext - Context-threaded: all audit events linked to originating task for full request traces
Framework Rename: custom → forge
The default framework is now forge (previously custom). The forge framework uses the built-in LLM executor — no external entrypoint script required.
entrypointis now optional forframework: forge(required forcrewai,langchain)- Backward compatible:
framework: customis still accepted as an alias - Dead
agent.py/main.goscaffolding removed fromforge init
New CLI Commands
| Command | Description |
|---|---|
forge secret set KEY VALUE |
Store an encrypted secret |
forge secret get KEY |
Retrieve a decrypted secret |
forge secret list |
List stored secret keys |
forge secret delete KEY |
Remove a secret |
forge key generate |
Generate Ed25519 signing keypair |
forge key trust <pubkey-path> |
Add public key to trust keyring |
forge key list |
List trusted public keys |
All forge secret commands support --local to operate on the agent-local file instead of the global one.
Configuration
New secrets block in forge.yaml:
agent_id: my-agent
version: "1.0"
framework: forge # was "custom" — entrypoint now optional
model:
provider: anthropic
name: claude-sonnet-4-20250514
secrets:
providers: [encrypted-file, env]
path: .forge/secrets.enc # optional, defaults to ~/.forge/secrets.encNew environment variable: FORGE_PASSPHRASE — passphrase for encrypted secret files (prompted interactively if not set).
What Changed
61 files changed, 4,585 insertions(+), 270 deletions(-)
New Packages
forge-core/secrets/— encrypted file provider, env provider, chain provider with full test coverageforge-core/security/egress_enforcer.go— HTTP transport-level egress enforcementforge-core/runtime/audit.go— structured NDJSON audit logging
New Build Stages
forge-cli/build/signing_stage.go— SHA-256 checksums + Ed25519 signingforge-cli/build/secret_safety_stage.go— prevents secret leakage into containers
New Runtime Components
forge-cli/runtime/verify.go— runtime signature verification against trust keyringforge-cli/cmd/secret.go—forge secretsubcommandsforge-cli/cmd/key.go—forge keysubcommands
Pull Requests
- #9 — Add runtime egress enforcement and audit logging
- #10 — Add per-agent secrets, build signing, and forge framework
Contributors
Installation
brew tap initializ/tap
brew install forge-cliOr build from source:
git clone https://github.com/initializ/forge.git
cd forge
go build -o forge ./forge-cli/cmd/forge/Full Changelog: v0.2.0...v0.3.0