| Version | Supported |
|---|---|
| 3.0.x | ✅ Current |
| 2.x | ❌ Not supported — upgrade to 3.0.x |
| < 2.0 | ❌ Not supported |
We recommend always running the latest version. Use npx chati-dev check-update to verify.
If you discover a security vulnerability in Chati.dev, please report it responsibly.
- Do NOT open a public GitHub issue for security vulnerabilities
- Email security@chati.dev with details
- Include:
- Description of the vulnerability
- Steps to reproduce
- Potential impact assessment
- Affected versions
- Suggested fix (if any)
We will acknowledge your report, assess severity, and coordinate a fix with you.
| Area | Examples |
|---|---|
| Agent System | Prompt injection that bypasses Session Lock, Constitution enforcement, or write scope isolation |
| Terminal Spawning | Write scope escape, model bypass, or unauthorized parallel execution |
| CLI Installer | Path traversal, command injection, arbitrary file write |
| Session State | Credential exposure in session.yaml or CLAUDE.md |
| System Files | Injection via templates, workflows, or intelligence files |
| Memory Layer | Unauthorized access to stored memories across projects |
| Generated Artifacts | Secrets or credentials in generated code or documentation |
- Vulnerabilities in third-party npm dependencies (report to upstream maintainers)
- Issues requiring physical access to the machine
- Social engineering attacks
- Denial of service via resource exhaustion
- Security issues in the user's own project code (not generated by Chati.dev)
- Least Privilege: Agents operate within their designated scope (Article I, XI)
- No Secrets in System: Credentials are referenced by name only — never stored (Article IV)
- Session Isolation:
.chati/session.yamland.chati/memories/are gitignored by default - Constitution Enforcement: Security violations halt the pipeline (Article IV)
- Session Lock: Active sessions cannot be bypassed to access raw AI mode (Article XV)
- Supply Chain Integrity: Ed25519 manifest signing on publish, verified on install (Article IV)
- Read Protection: Sensitive file reads blocked by hook before execution (Article IV)
Package integrity is enforced through cryptographic signing:
| Stage | What Happens |
|---|---|
| Publish | sign-manifest.js generates SHA-256 hash for every framework file, signs the manifest with Ed25519 private key, embeds signature + public key in package |
| Install | npx chati-dev init verifies Ed25519 signature against public key, validates per-file SHA-256 hashes, blocks installation if tampered |
| Validation | npx chati-dev health includes manifest integrity check |
The signing key (signing-public-key.pem) is embedded in the package. The private key is never published.
A Claude Code PreToolUse hook (read-protection.js) blocks reads of sensitive files:
| Blocked Pattern | Example |
|---|---|
.env, .env.* (except .env.example) |
.env.production, .env.local |
*.pem (except signing-public-key.pem) |
server.pem, private.pem |
*.key |
server.key, tls.key |
credentials.*, secrets.* |
credentials.json, secrets.yaml |
.git/config |
May contain access tokens |
Autonomous agents run in separate claude -p terminals. Security measures:
| Control | Implementation |
|---|---|
| Write Scope Isolation | Each agent's write scope is enforced via prompt instructions. Parallel agents have disjoint write paths validated before spawning. |
| Model Enforcement | The --model flag is set by construction — agents cannot switch to a different model at runtime. |
--dangerously-skip-permissions |
Used for spawned terminals because claude -p cannot prompt users interactively. Mitigated by: write scope enforcement in prompt, Constitution guard hook, mode governance hook. |
| Prompt Integrity | Prompts are piped via stdin (not CLI args) to prevent shell injection. Context is self-contained — no external file references at runtime. |
| Parallel Validation | validateWriteScopes() blocks parallel groups with overlapping write paths before spawning. |
| Article | Security Control |
|---|---|
| IV | No destructive operations without confirmation. No secrets in system files. SAST mandatory. |
| XI | Mode governance restricts write scope. Planning mode cannot modify project code. |
| XIII | Memory Layer never auto-modifies user files. Proposals require explicit approval. |
| XV | Session Lock prevents accidental system escape. Exit requires explicit intent. |
| XVI | Model governance — no downgrade from assigned model. Cost tracking logged in session. |
When using Chati.dev:
- Never commit secrets: Ensure
.env, credentials, and API keys are in.gitignore - Review generated files: Check
CLAUDE.mdand session.yaml before sharing projects - Keep updated: Run
npx chati-dev check-updateregularly - Verify installations: Run
npx chati-dev healthto validate system integrity - Audit memories: Periodically review
.chati/memories/for sensitive content - Use SAST: The QA-Implementation agent runs SAST scanning — don't skip it
We follow responsible disclosure:
- Reporter submits vulnerability via security@chati.dev
- We acknowledge receipt and assess severity
- We develop and test a fix
- We coordinate release timing with the reporter
- We publish the fix with a security advisory
- We credit the reporter (unless they prefer anonymity)
Security is a pipeline requirement, not an afterthought.
Chati.dev © 2026