You are in AUTONOMOUS MODE. Do NOT ask questions. Audit current encryption state, then implement improvements.
TARGET:
$ARGUMENTS
If no arguments provided, perform a full encryption audit and generate an implementation plan. If arguments specify an area (e.g., "password hashing", "TLS", "key rotation"), focus on that area and implement changes.
============================================================
PHASE 0: TECH STACK DETECTION
Auto-detect the project's technology stack:
- Language and framework (Node.js, Python, Go, Java, Rust, etc.)
- Database (PostgreSQL, MySQL, MongoDB, Firestore, DynamoDB, etc.)
- Cloud provider (AWS, GCP, Azure, self-hosted)
- Authentication system (Firebase Auth, Auth0, Passport.js, custom)
- File storage (S3, GCS, local filesystem)
- Mobile/web platform (affects certificate pinning requirements)
- Secret management (Vault, AWS Secrets Manager, GCP Secret Manager, env vars)
Record the stack — encryption implementation varies significantly by technology.
============================================================
PHASE 1: DATA AT REST ENCRYPTION AUDIT
Assess current encryption of stored data:
DATABASE ENCRYPTION:
- Check if database-level encryption is enabled (TDE for SQL, encryption at rest for cloud DBs)
- Check database connection strings for SSL/TLS parameters
- For cloud databases: verify encryption is enabled in config/IaC files
FIELD-LEVEL ENCRYPTION:
- Identify PII fields in data models (email, phone, SSN, payment info, health data)
- Check if sensitive fields are encrypted before storage
- Check encryption algorithm used (AES-256-GCM preferred)
- Check if initialization vectors (IVs) are unique per record (not reused)
- Verify encrypted fields are searchable only via exact match or encrypted index
FILE ENCRYPTION:
- Check if uploaded files are encrypted at rest
- Check if file storage service has encryption enabled (S3 SSE, GCS encryption)
- Verify temporary files are cleaned up (not left unencrypted on disk)
BACKUP ENCRYPTION:
- Check if database backups are encrypted
- Check if backup encryption keys are separate from primary keys
- Verify backup retention and key retention align
For each area: current state, gaps, and recommended implementation.
============================================================
PHASE 2: DATA IN TRANSIT ENCRYPTION AUDIT
Assess encryption of data in motion:
TLS CONFIGURATION:
- Check TLS version requirements (minimum TLS 1.2, prefer TLS 1.3)
- Search for disabled certificate verification:
- Node.js:
rejectUnauthorized: false, NODE_TLS_REJECT_UNAUTHORIZED=0
- Python:
verify=False, ssl._create_unverified_context()
- Go:
InsecureSkipVerify: true
- Java: custom TrustManager accepting all certificates
- Check for HTTP (not HTTPS) URLs in API calls
- Check for insecure WebSocket (
ws://) connections
SECURITY HEADERS:
Strict-Transport-Security (HSTS) — present, max-age >= 31536000, includeSubDomains
Content-Security-Policy — restricts resource loading
X-Content-Type-Options: nosniff
X-Frame-Options: DENY or SAMEORIGIN
Referrer-Policy: strict-origin-when-cross-origin or stricter
CERTIFICATE PINNING (mobile apps):
- Flutter: check for certificate pinning in HTTP client config
- iOS: check for
NSAppTransportSecurity settings in Info.plist
- Android: check for
network_security_config.xml
- Verify pins are for intermediate certificates (not leaf — avoids rotation issues)
INTERNAL COMMUNICATION:
- Service-to-service communication encrypted (mTLS or service mesh)
- Database connections use SSL/TLS
- Redis/cache connections encrypted
- Message queue connections encrypted (RabbitMQ, Kafka SSL)
============================================================
PHASE 3: KEY MANAGEMENT AUDIT AND IMPLEMENTATION
Assess and improve cryptographic key management:
CURRENT STATE AUDIT:
- Where are encryption keys stored? (env vars, config files, code, KMS)
- Are keys hardcoded in source code? (Critical finding if yes)
- Are keys in version control? (Critical finding if yes)
- Is there a key rotation process?
- Are different keys used for different purposes (separation of concerns)?
KEY ROTATION STRATEGY:
Generate a key rotation plan based on the detected stack:
For AWS:
- Use AWS KMS for master keys
- Implement envelope encryption: KMS key → data key → encrypt data
- Enable automatic annual rotation for KMS keys
- Data keys rotated per-session or per-record
For GCP:
- Use Cloud KMS for master keys
- Enable automatic rotation (90-day recommended)
- Use envelope encryption pattern
- Separate key rings per environment
For self-hosted / Vault:
- Use HashiCorp Vault Transit secrets engine
- Configure auto-rotation policies
- Implement key versioning for re-encryption
- Set up audit logging for key access
ENVELOPE ENCRYPTION IMPLEMENTATION:
If the project needs field-level encryption, implement the envelope encryption pattern:
- Master key stored in KMS (never leaves KMS)
- Data Encryption Key (DEK) generated per record or per batch
- DEK encrypted by master key, stored alongside encrypted data
- On decrypt: KMS decrypts DEK, DEK decrypts data
Provide implementation code specific to the detected stack.
============================================================
PHASE 4: PASSWORD HASHING AUDIT
Assess password storage security:
ALGORITHM CHECK:
- Identify the password hashing algorithm in use
- Rate the algorithm:
- argon2id — EXCELLENT (preferred, memory-hard)
- bcrypt — GOOD (widely supported, CPU-hard)
- scrypt — GOOD (memory-hard)
- PBKDF2 — ACCEPTABLE (if iteration count >= 600,000 for SHA-256)
- SHA-256/SHA-512 with salt — WEAK (too fast, upgrade needed)
- MD5 / SHA-1 — CRITICAL (must replace immediately)
- Plaintext — CRITICAL (must replace immediately)
CONFIGURATION CHECK:
- bcrypt: work factor >= 12 (recommended: 12-14)
- argon2: memory >= 64MB, iterations >= 3, parallelism >= 1
- scrypt: N >= 2^15, r >= 8, p >= 1
- PBKDF2: iterations >= 600,000 (SHA-256) or >= 210,000 (SHA-512)
SALT CHECK:
- Unique salt per password (not global salt)
- Salt length >= 16 bytes
- Salt generated with cryptographic RNG
MIGRATION PLAN:
If the current algorithm is weak, generate a migration plan:
- Implement new hashing algorithm alongside old
- On login: verify with old algorithm, re-hash with new, store new hash
- Set deadline for forced password reset for accounts not yet migrated
- Remove old algorithm support after migration period
============================================================
PHASE 5: TOKEN AND API KEY SECURITY
Assess token generation and API key management:
TOKEN GENERATION:
- JWT signing algorithm (HS256 acceptable, RS256/ES256 preferred for distributed systems)
- JWT secret strength (>= 256 bits for HMAC, proper key pair for RSA/ECDSA)
- JWT expiration configured (access tokens: 15-60 minutes, refresh tokens: 7-30 days)
- Session tokens use
crypto.randomBytes(32) or equivalent CSPRNG
- No
Math.random() for security-sensitive tokens
- OTP/verification codes use cryptographic randomness
API KEY MANAGEMENT:
- API keys stored hashed (like passwords), not in plaintext
- API keys scoped to minimum required permissions
- API key rotation mechanism exists
- Rate limiting per API key
- API key revocation capability
- API keys not logged or exposed in error messages
REFRESH TOKEN SECURITY:
- Refresh tokens stored securely (httpOnly cookie or secure storage)
- Refresh token rotation on use (one-time use)
- Refresh token family tracking (detect stolen tokens)
- Absolute expiration on refresh tokens
============================================================
PHASE 6: IMPLEMENTATION
If the $ARGUMENTS request implementation (not just audit), apply fixes:
For each issue found in Phases 1-5:
- Implement the fix using the project's existing patterns and dependencies
- Add or update configuration as needed
- Write migration scripts if data format changes
- Verify the fix works (run tests, verify encryption/decryption roundtrip)
- Commit each logical change separately with descriptive messages
Priority order for implementation:
- Hardcoded secrets → move to environment variables or secret manager
- Weak password hashing → upgrade algorithm
- Missing TLS verification → enable proper certificate validation
- Unencrypted PII → add field-level encryption
- Missing security headers → add header middleware
- Key rotation → implement rotation strategy
============================================================
SELF-HEALING VALIDATION (max 2 iterations)
After producing the security analysis, validate thoroughness:
- Verify every category in the audit was actually checked (not skipped).
- Verify every finding has a specific file:line location.
- Verify severity ratings are justified by impact assessment.
- Verify no false positives by re-reading flagged code in context.
IF VALIDATION FAILS:
- Re-audit skipped categories or vague findings
- Verify or remove false positives
- Repeat up to 2 iterations
============================================================
OUTPUT
Encryption Audit Report
Project: [name]
Stack: [detected technologies]
Date: [date]
Summary
| Area |
Status |
Findings |
| Data at Rest |
[GOOD/PARTIAL/WEAK/NONE] |
N issues |
| Data in Transit |
[GOOD/PARTIAL/WEAK/NONE] |
N issues |
| Key Management |
[GOOD/PARTIAL/WEAK/NONE] |
N issues |
| Password Hashing |
[GOOD/PARTIAL/WEAK/NONE] |
N issues |
| Token Security |
[GOOD/PARTIAL/WEAK/NONE] |
N issues |
| API Key Security |
[GOOD/PARTIAL/WEAK/NONE] |
N issues |
Critical Findings (fix immediately)
[Hardcoded secrets, plaintext passwords, disabled TLS, etc.]
Recommendations
[Ordered list by priority with implementation guidance]
Implementation Plan
| Priority |
Area |
Action |
Effort |
Dependencies |
| P0 |
Secrets |
Move to env vars |
1 hour |
None |
| P1 |
Passwords |
Upgrade to argon2 |
4 hours |
Migration script |
| P2 |
PII |
Field-level encryption |
1 day |
KMS setup |
Changes Made (if implementation was performed)
[List of commits with descriptions of what was implemented]
============================================================
NEXT STEPS
After reviewing the encryption audit:
- "Run
/secure to verify overall security posture after encryption improvements."
- "Run
/soc2 to check Confidentiality (C1) controls with new encryption."
- "Run
/gdpr to verify PII encryption meets compliance requirements."
- "Run
/pentest to verify secrets are no longer exposed."
- "Set up automated key rotation on the schedule recommended above."
============================================================
SELF-EVOLUTION TELEMETRY
After producing output, record execution metadata for the /evolve pipeline.
Check if a project memory directory exists:
- Look for the project path in
~/.claude/projects/
- If found, append to
skill-telemetry.md in that memory directory
Entry format:
### /encryption — {{YYYY-MM-DD}}
- Outcome: {{SUCCESS | PARTIAL | FAILED}}
- Self-healed: {{yes — what was healed | no}}
- Iterations used: {{N}} / {{N max}}
- Bottleneck: {{phase that struggled or "none"}}
- Suggestion: {{one-line improvement idea for /evolve, or "none"}}
Only log if the memory directory exists. Skip silently if not found.
Keep entries concise — /evolve will parse these for skill improvement signals.
============================================================
DO NOT
- Do NOT store or log encryption keys, passwords, or secrets in the output.
- Do NOT downgrade existing encryption (e.g., replacing AES-256 with AES-128).
- Do NOT implement custom cryptographic algorithms — use well-vetted libraries.
- Do NOT use ECB mode for block ciphers — use GCM or CBC with HMAC.
- Do NOT generate keys with
Math.random() or non-cryptographic PRNGs.
- Do NOT disable TLS verification as a "fix" for certificate issues.
- Do NOT commit secrets even temporarily — use environment variables from the start.
- Do NOT implement encryption without a decryption/migration path.
1---2name: encryption3description: Audit and harden encryption across the full stack. Checks data-at-rest encryption (database TDE, field-level AES-256-GCM, file storage SSE, backup encryption), data-in-transit security (TLS 1.2+, HSTS, certificate pinning, mTLS, WebSocket WSS), key management (KMS, envelope encryption, key rotation, key separation), password hashing (argon2id, bcrypt, scrypt, PBKDF2 work factors, salt uniqueness, migration plans), token security (JWT signing algorithms, CSPRNG, refresh token rotation), and API key management (hashed storage, scoping, revocation). Use when you need to audit crypto, fix weak hashing, implement envelope encryption, rotate keys, upgrade TLS, or harden token generation.4---5
6You are in AUTONOMOUS MODE. Do NOT ask questions. Audit current encryption state, then implement improvements.
7
8TARGET:
9$ARGUMENTS
10
11If no arguments provided, perform a full encryption audit and generate an implementation plan. If arguments specify an area (e.g., "password hashing", "TLS", "key rotation"), focus on that area and implement changes.
12
13============================================================
14PHASE 0: TECH STACK DETECTION
15============================================================
16
17Auto-detect the project's technology stack:
18
19- Language and framework (Node.js, Python, Go, Java, Rust, etc.)
20- Database (PostgreSQL, MySQL, MongoDB, Firestore, DynamoDB, etc.)
21- Cloud provider (AWS, GCP, Azure, self-hosted)
22- Authentication system (Firebase Auth, Auth0, Passport.js, custom)
23- File storage (S3, GCS, local filesystem)
24- Mobile/web platform (affects certificate pinning requirements)
25- Secret management (Vault, AWS Secrets Manager, GCP Secret Manager, env vars)
26
27Record the stack — encryption implementation varies significantly by technology.
28
29============================================================
30PHASE 1: DATA AT REST ENCRYPTION AUDIT
31============================================================
32
33Assess current encryption of stored data:
34
35DATABASE ENCRYPTION:
36- Check if database-level encryption is enabled (TDE for SQL, encryption at rest for cloud DBs)
37- Check database connection strings for SSL/TLS parameters
38- For cloud databases: verify encryption is enabled in config/IaC files
39
40FIELD-LEVEL ENCRYPTION:
41- Identify PII fields in data models (email, phone, SSN, payment info, health data)
42- Check if sensitive fields are encrypted before storage
43- Check encryption algorithm used (AES-256-GCM preferred)
44- Check if initialization vectors (IVs) are unique per record (not reused)
45- Verify encrypted fields are searchable only via exact match or encrypted index
46
47FILE ENCRYPTION:
48- Check if uploaded files are encrypted at rest
49- Check if file storage service has encryption enabled (S3 SSE, GCS encryption)
50- Verify temporary files are cleaned up (not left unencrypted on disk)
51
52BACKUP ENCRYPTION:
53- Check if database backups are encrypted
54- Check if backup encryption keys are separate from primary keys
55- Verify backup retention and key retention align
56
57For each area: current state, gaps, and recommended implementation.
58
59============================================================
60PHASE 2: DATA IN TRANSIT ENCRYPTION AUDIT
61============================================================
62
63Assess encryption of data in motion:
64
65TLS CONFIGURATION:
66- Check TLS version requirements (minimum TLS 1.2, prefer TLS 1.3)
67- Search for disabled certificate verification:
68 - Node.js: `rejectUnauthorized: false`, `NODE_TLS_REJECT_UNAUTHORIZED=0`
69 - Python: `verify=False`, `ssl._create_unverified_context()`
70 - Go: `InsecureSkipVerify: true`
71 - Java: custom TrustManager accepting all certificates
72- Check for HTTP (not HTTPS) URLs in API calls
73- Check for insecure WebSocket (`ws://`) connections
74
75SECURITY HEADERS:
76- `Strict-Transport-Security` (HSTS) — present, max-age >= 31536000, includeSubDomains
77- `Content-Security-Policy` — restricts resource loading
78- `X-Content-Type-Options: nosniff`
79- `X-Frame-Options: DENY` or `SAMEORIGIN`
80- `Referrer-Policy: strict-origin-when-cross-origin` or stricter
81
82CERTIFICATE PINNING (mobile apps):
83- Flutter: check for certificate pinning in HTTP client config
84- iOS: check for `NSAppTransportSecurity` settings in Info.plist
85- Android: check for `network_security_config.xml`
86- Verify pins are for intermediate certificates (not leaf — avoids rotation issues)
87
88INTERNAL COMMUNICATION:
89- Service-to-service communication encrypted (mTLS or service mesh)
90- Database connections use SSL/TLS
91- Redis/cache connections encrypted
92- Message queue connections encrypted (RabbitMQ, Kafka SSL)
93
94============================================================
95PHASE 3: KEY MANAGEMENT AUDIT AND IMPLEMENTATION
96============================================================
97
98Assess and improve cryptographic key management:
99
100CURRENT STATE AUDIT:
101- Where are encryption keys stored? (env vars, config files, code, KMS)
102- Are keys hardcoded in source code? (Critical finding if yes)
103- Are keys in version control? (Critical finding if yes)
104- Is there a key rotation process?
105- Are different keys used for different purposes (separation of concerns)?
106
107KEY ROTATION STRATEGY:
108Generate a key rotation plan based on the detected stack:
109
110For AWS:
111```
112- Use AWS KMS for master keys
113- Implement envelope encryption: KMS key → data key → encrypt data
114- Enable automatic annual rotation for KMS keys
115- Data keys rotated per-session or per-record
116```
117
118For GCP:
119```
120- Use Cloud KMS for master keys
121- Enable automatic rotation (90-day recommended)
122- Use envelope encryption pattern
123- Separate key rings per environment
124```
125
126For self-hosted / Vault:
127```
128- Use HashiCorp Vault Transit secrets engine
129- Configure auto-rotation policies
130- Implement key versioning for re-encryption
131- Set up audit logging for key access
132```
133
134ENVELOPE ENCRYPTION IMPLEMENTATION:
135If the project needs field-level encryption, implement the envelope encryption pattern:
1361. Master key stored in KMS (never leaves KMS)
1372. Data Encryption Key (DEK) generated per record or per batch
1383. DEK encrypted by master key, stored alongside encrypted data
1394. On decrypt: KMS decrypts DEK, DEK decrypts data
140
141Provide implementation code specific to the detected stack.
142
143============================================================
144PHASE 4: PASSWORD HASHING AUDIT
145============================================================
146
147Assess password storage security:
148
149ALGORITHM CHECK:
150- Identify the password hashing algorithm in use
151- Rate the algorithm:
152 - argon2id — EXCELLENT (preferred, memory-hard)
153 - bcrypt — GOOD (widely supported, CPU-hard)
154 - scrypt — GOOD (memory-hard)
155 - PBKDF2 — ACCEPTABLE (if iteration count >= 600,000 for SHA-256)
156 - SHA-256/SHA-512 with salt — WEAK (too fast, upgrade needed)
157 - MD5 / SHA-1 — CRITICAL (must replace immediately)
158 - Plaintext — CRITICAL (must replace immediately)
159
160CONFIGURATION CHECK:
161- bcrypt: work factor >= 12 (recommended: 12-14)
162- argon2: memory >= 64MB, iterations >= 3, parallelism >= 1
163- scrypt: N >= 2^15, r >= 8, p >= 1
164- PBKDF2: iterations >= 600,000 (SHA-256) or >= 210,000 (SHA-512)
165
166SALT CHECK:
167- Unique salt per password (not global salt)
168- Salt length >= 16 bytes
169- Salt generated with cryptographic RNG
170
171MIGRATION PLAN:
172If the current algorithm is weak, generate a migration plan:
1731. Implement new hashing algorithm alongside old
1742. On login: verify with old algorithm, re-hash with new, store new hash
1753. Set deadline for forced password reset for accounts not yet migrated
1764. Remove old algorithm support after migration period
177
178============================================================
179PHASE 5: TOKEN AND API KEY SECURITY
180============================================================
181
182Assess token generation and API key management:
183
184TOKEN GENERATION:
185- JWT signing algorithm (HS256 acceptable, RS256/ES256 preferred for distributed systems)
186- JWT secret strength (>= 256 bits for HMAC, proper key pair for RSA/ECDSA)
187- JWT expiration configured (access tokens: 15-60 minutes, refresh tokens: 7-30 days)
188- Session tokens use `crypto.randomBytes(32)` or equivalent CSPRNG
189- No `Math.random()` for security-sensitive tokens
190- OTP/verification codes use cryptographic randomness
191
192API KEY MANAGEMENT:
193- API keys stored hashed (like passwords), not in plaintext
194- API keys scoped to minimum required permissions
195- API key rotation mechanism exists
196- Rate limiting per API key
197- API key revocation capability
198- API keys not logged or exposed in error messages
199
200REFRESH TOKEN SECURITY:
201- Refresh tokens stored securely (httpOnly cookie or secure storage)
202- Refresh token rotation on use (one-time use)
203- Refresh token family tracking (detect stolen tokens)
204- Absolute expiration on refresh tokens
205
206============================================================
207PHASE 6: IMPLEMENTATION
208============================================================
209
210If the $ARGUMENTS request implementation (not just audit), apply fixes:
211
212For each issue found in Phases 1-5:
2131. Implement the fix using the project's existing patterns and dependencies
2142. Add or update configuration as needed
2153. Write migration scripts if data format changes
2164. Verify the fix works (run tests, verify encryption/decryption roundtrip)
2175. Commit each logical change separately with descriptive messages
218
219Priority order for implementation:
2201. Hardcoded secrets → move to environment variables or secret manager
2212. Weak password hashing → upgrade algorithm
2223. Missing TLS verification → enable proper certificate validation
2234. Unencrypted PII → add field-level encryption
2245. Missing security headers → add header middleware
2256. Key rotation → implement rotation strategy
226
227
228============================================================
229SELF-HEALING VALIDATION (max 2 iterations)
230============================================================
231
232After producing the security analysis, validate thoroughness:
233
2341. Verify every category in the audit was actually checked (not skipped).
2352. Verify every finding has a specific file:line location.
2363. Verify severity ratings are justified by impact assessment.
2374. Verify no false positives by re-reading flagged code in context.
238
239IF VALIDATION FAILS:
240- Re-audit skipped categories or vague findings
241- Verify or remove false positives
242- Repeat up to 2 iterations
243
244============================================================
245OUTPUT
246============================================================
247
248## Encryption Audit Report
249
250**Project:** [name]
251**Stack:** [detected technologies]
252**Date:** [date]
253
254### Summary
255
256| Area | Status | Findings |
257|------|--------|----------|
258| Data at Rest | [GOOD/PARTIAL/WEAK/NONE] | N issues |
259| Data in Transit | [GOOD/PARTIAL/WEAK/NONE] | N issues |
260| Key Management | [GOOD/PARTIAL/WEAK/NONE] | N issues |
261| Password Hashing | [GOOD/PARTIAL/WEAK/NONE] | N issues |
262| Token Security | [GOOD/PARTIAL/WEAK/NONE] | N issues |
263| API Key Security | [GOOD/PARTIAL/WEAK/NONE] | N issues |
264
265### Critical Findings (fix immediately)
266[Hardcoded secrets, plaintext passwords, disabled TLS, etc.]
267
268### Recommendations
269[Ordered list by priority with implementation guidance]
270
271### Implementation Plan
272
273| Priority | Area | Action | Effort | Dependencies |
274|----------|------|--------|--------|-------------|
275| P0 | Secrets | Move to env vars | 1 hour | None |
276| P1 | Passwords | Upgrade to argon2 | 4 hours | Migration script |
277| P2 | PII | Field-level encryption | 1 day | KMS setup |
278
279### Changes Made (if implementation was performed)
280[List of commits with descriptions of what was implemented]
281
282============================================================
283NEXT STEPS
284============================================================
285
286After reviewing the encryption audit:
287- "Run `/secure` to verify overall security posture after encryption improvements."
288- "Run `/soc2` to check Confidentiality (C1) controls with new encryption."
289- "Run `/gdpr` to verify PII encryption meets compliance requirements."
290- "Run `/pentest` to verify secrets are no longer exposed."
291- "Set up automated key rotation on the schedule recommended above."
292
293
294============================================================
295SELF-EVOLUTION TELEMETRY
296============================================================
297
298After producing output, record execution metadata for the /evolve pipeline.
299
300Check if a project memory directory exists:
301- Look for the project path in `~/.claude/projects/`
302- If found, append to `skill-telemetry.md` in that memory directory
303
304Entry format:
305```
306### /encryption — {{YYYY-MM-DD}}
307- Outcome: {{SUCCESS | PARTIAL | FAILED}}
308- Self-healed: {{yes — what was healed | no}}
309- Iterations used: {{N}} / {{N max}}
310- Bottleneck: {{phase that struggled or "none"}}
311- Suggestion: {{one-line improvement idea for /evolve, or "none"}}
312```
313
314Only log if the memory directory exists. Skip silently if not found.
315Keep entries concise — /evolve will parse these for skill improvement signals.
316
317============================================================
318DO NOT
319============================================================
320
321- Do NOT store or log encryption keys, passwords, or secrets in the output.
322- Do NOT downgrade existing encryption (e.g., replacing AES-256 with AES-128).
323- Do NOT implement custom cryptographic algorithms — use well-vetted libraries.
324- Do NOT use ECB mode for block ciphers — use GCM or CBC with HMAC.
325- Do NOT generate keys with `Math.random()` or non-cryptographic PRNGs.
326- Do NOT disable TLS verification as a "fix" for certificate issues.
327- Do NOT commit secrets even temporarily — use environment variables from the start.
328- Do NOT implement encryption without a decryption/migration path.