| Version | Supported |
|---|---|
| latest | Yes |
If you discover a security vulnerability, please do not open a public issue.
Email the maintainers directly. We will respond within 48 hours.
- JWT tokens via Passport.js (
JwtAuthGuard) for REST API - WebSocket auth via
WsJwtGuard— JWT verification on handshake, falls back to anonymous with scoped data access - Passwords hashed with bcrypt
- LLM API keys stored in
.envfile (never committed) - Template:
apps/core-engine/.env.example - Keys:
DASHSCOPE_API_KEY,OPENAI_API_KEY
- All file operations restricted to
SANDBOX_ROOTdirectory - Default:
~/deepspace-sandbox - Path traversal attacks blocked via
path.resolvenormalization
The http_request agent tool blocks requests to private/internal networks:
localhost,127.0.0.1,0.0.0.0192.168.0.0/16,10.0.0.0/8,172.16.0.0/12- Non-HTTP protocols (
ftp://,file://, etc.) - 15-second request timeout
- SQLite via
better-sqlite3with WAL mode - Database files stored locally with file system permissions
- User-scoped data access enforced at service layer (user ID matching)
- Never commit
.envfiles — they are in.gitignore - Use HTTPS in production — required for clipboard API and secure WebSocket
- Bind to localhost — default dev server binds to
localhost:3000, not exposed to public - Rotate JWT secrets periodically and use strong secrets in production