Claude Code उत्पादन घटना गाइड: पहचान, रोलबैक, RCA और रोकथाम
Claude Code उत्पादन घटनाओं की गाइड: गुप्त कुंजी, गलत मिटाना, डेटाबेस, लागत, रोलबैक, RCA और रोकथाम।
Claude Code फाइलें पढ़ सकता है, कोड बदल सकता है और शेल कमांड चला सकता है। इसलिए उत्पादन रिपॉजिटरी में काम तेज होता है, लेकिन जोखिम भी तेज हो जाता है। जल्दबाजी में दी गई अनुमति से गुप्त कुंजी का रिसाव, फाइल मिटना, main पर गलत लिखाई, गलत डेटाबेस migration या API लागत बढ़ सकती है।
यह लेख किसी एक कंपनी की वास्तविक निजी घटना का दावा नहीं करता। ये ClaudeCodeLab के अभ्यास, रिपॉजिटरी समीक्षा और सामग्री संचालन से बने मिश्रित उदाहरण हैं। समय और रकम उदाहरण हैं, लेकिन पैटर्न इतने वास्तविक हैं कि इन्हें उत्पादन से पहले अभ्यास करना चाहिए।
घटना का मतलब है ऐसा प्रसंग जो उपयोगकर्ता, डेटा, सुरक्षा, लागत या उपलब्धता को प्रभावित करे। रोकथाम यानी नुकसान बढ़ने से रोकना। RCA यानी root cause analysis, सरल भाषा में मूल कारण विश्लेषण। रोलबैक यानी अंतिम सुरक्षित संस्करण पर लौटना।
सटीक syntax के लिए आधिकारिक Claude Code settings और hooks guide देखें। यहां क्रम है: पहचान, रोकथाम, निदान, रोलबैक, सूचना, घटना-समीक्षा और पुनरावृत्ति रोकना।
घटना प्रतिक्रिया क्रम
| चरण | लक्ष्य | Claude Code से क्या करवाएं |
|---|---|---|
| पहचान | क्या बदला और किस पर असर पड़ा | alerts, logs, diff, deploy और हाल की commands का सार |
| रोकथाम | नुकसान रोकना | key revoke, job pause, feature flag OFF, endpoint disable की योजना |
| निदान | सीधा कारण सीमित करना | अंतिम सुरक्षित deploy और विफल बदलाव की तुलना |
| रोलबैक | सुरक्षित स्थिति में लौटना | लक्ष्य संस्करण, डेटा जोखिम और जांच commands |
| सूचना | टीम को साफ जानकारी देना | स्थिति, प्रभाव, अगली सूचना का समय और जिम्मेदार व्यक्ति |
| घटना-समीक्षा | घटना से सीख निकालना | RCA, समयरेखा, छूटी हुई पहचान और कार्यसूची |
| बचाव | दोहराव कठिन बनाना | permissions, hooks, CI, alerts और समीक्षा gate |
गुप्त कुंजियां, बिलिंग, निजी डेटा और डेटाबेस writes में नियम है: पहले रोकें, फिर जांचें।
सात ठोस घटना पैटर्न
| पैटर्न | क्या होता है | पहला कदम | आम गलती |
|---|---|---|---|
| गुप्त कुंजी रिसाव | .env, logs या screenshot में API key दिखती है | key revoke, rotate, logs check | git साफ किया, CI logs भूल गए |
| खतरनाक मिटाना | rm -rf जरूरी files हटाता है | काम रोकें, backup देखें, untracked files list करें | git checkout . untracked files नहीं लौटाता |
| force push | main टीम commits पर लिखता है | push रोकें, reflog देखें, recovery branch बनाएं | --force-with-lease और --force मिलाना |
| डेटाबेस migration | drop, mass update या lock से outage | writes pause, state save, restore plan | बिना जांचा SQL उत्पादन में चलाना |
| API retry loop | failed calls लागत बढ़ाते रहते हैं | process kill, queue pause, limit check | ”retry” अनंत loop बन जाता है |
| dependency टूटना | deploy 503 देता है | previous deploy activate, lockfile check | npm update major upgrade कर देता है |
| authentication गायब | admin endpoint public हो जाता है | endpoint disable, access logs review | ”admin” लिखना authentication requirement नहीं है |
तीन घटना उपयोग मामले
API key रिसाव का पता GitHub secret scanning, cloud alert या billing screen से लग सकता है। पहला काम key revoke है। फिर public repo, PR, CI logs, chat और monitoring देखें।
git status --short
git diff --cached --name-only
git log --all -- .env .env.local
git grep -n "sk-" -- ':!node_modules' ':!dist'
डेटाबेस migration failure में पहले writes रोकें। Code rollback जल्दी हो सकता है, लेकिन मिटे हुए डेटा के लिए backup, WAL, audit logs या external resync चाहिए।
psql "$DATABASE_URL" -c "select now();"
psql "$DATABASE_URL" -c "\d users"
pg_dump "$DATABASE_URL" --schema-only > schema_before_repair.sql
API retries के लिए कठोर सीमा रखें। नीचे वाली file incident-budget-runner.mjs नाम से save करके batch jobs के साथ चलाएं।
#!/usr/bin/env node
import { spawn } from "node:child_process";
const command = process.argv.slice(2);
const maxAttempts = Number(process.env.MAX_ATTEMPTS || 3);
const maxCostCents = Number(process.env.MAX_COST_CENTS || 200);
const costPerAttempt = Number(process.env.COST_PER_ATTEMPT_CENTS || 0);
if (command.length === 0) {
console.error("उपयोग: node incident-budget-runner.mjs <command> [...args]");
process.exit(2);
}
let estimatedCost = 0;
for (let attempt = 1; attempt <= maxAttempts; attempt += 1) {
const child = spawn(command[0], command.slice(1), {
stdio: "inherit",
shell: process.platform === "win32"
});
const exitCode = await new Promise((resolve) => {
child.on("exit", (code) => resolve(code ?? 1));
});
estimatedCost += costPerAttempt;
if (exitCode === 0) process.exit(0);
if (estimatedCost >= maxCostCents) {
console.error(`रोक दिया: अनुमानित लागत ${estimatedCost} सेंट`);
process.exit(1);
}
const delayMs = Math.min(1000 * 2 ** (attempt - 1), 10_000);
await new Promise((resolve) => setTimeout(resolve, delayMs));
}
console.error(`${maxAttempts} प्रयासों के बाद विफल`);
process.exit(1);
Claude Code सुरक्षा सीमाएं
{
"$schema": "https://json.schemastore.org/claude-code-settings.json",
"permissions": {
"deny": [
"Read(./.env)",
"Read(./.env.*)",
"Read(./secrets/**)",
"Bash(git push --force *main*)",
"Bash(git push -f *main*)",
"Bash(rm -rf /*)",
"Bash(rm -rf ~*)"
],
"ask": [
"Bash(git push*)",
"Bash(rm*)",
"Bash(npm install*)",
"Bash(*migrate*)",
"Bash(*deploy*)"
]
},
"hooks": {
"PreToolUse": [
{
"matcher": "Bash",
"hooks": [
{
"type": "command",
"command": "\"$CLAUDE_PROJECT_DIR\"/.claude/hooks/protect-danger.sh"
}
]
}
]
}
}
#!/usr/bin/env bash
set -euo pipefail
payload="$(cat)"
command="$(node -e 'const fs = require("fs"); const raw = fs.readFileSync(0, "utf8") || "{}"; const json = JSON.parse(raw); console.log(json.tool_input?.command || "");' <<< "$payload")"
blocked='(rm[[:space:]]+-rf[[:space:]]+(/|~)|git[[:space:]]+push[[:space:]].*(-f|--force)([[:space:]]|$)|DROP[[:space:]]+TABLE|TRUNCATE[[:space:]])'
if [[ "$command" =~ $blocked ]]; then
echo "खतरनाक command block किया गया: $command" >&2
exit 2
fi
exit 0
सूचना और घटना-समीक्षा templates
## Incident update
- Status: investigating / contained / recovery validation
- Impact: feature, users, start time
- Current action: job stopped, deploy reverted, logs checking
- Next update: YYYY-MM-DD HH:mm
- Owner:
# Postmortem: [title]
## Summary
- Started:
- Detected:
- Resolved:
- Impact:
- Severity: P0/P1/P2/P3
## Timeline
| Time | Event |
| --- | --- |
| HH:mm | |
## Cause
- Direct cause:
- Root cause:
- Why detection was late:
## Prevention
| Action | Owner | Due date |
| --- | --- | --- |
| | | |
घटना-समीक्षा संस्कृति के लिए Google SRE की Postmortem Culture उपयोगी reference है।
संबंधित लेख और अगला कदम
Claude Code सुरक्षा श्रेष्ठ अभ्यास, permissions guide, API लागत गाइड और verification receipt workflow साथ में पढ़ें।
अकेले शुरू कर रहे हैं तो मुफ्त cheatsheet से खतरनाक commands और जांच की आदत तय करें। दोबारा इस्तेमाल होने वाले templates के लिए ClaudeCodeLab products देखें। टीम rollout में CLAUDE.md, permissions, hooks, review और घटना अभ्यास चाहिए तो Claude Code training और consultation उपयोगी है।
ClaudeCodeLab अभ्यासों में सबसे बड़ा सुधार तब मिला जब निदान से पहले रोकथाम लिखी गई। Publish से पहले JSON, Bash और Node syntax validate करने से छोटे errors घटे। 20 मिनट की rehearsal में missing alerts, untested backups और बहुत broad Claude Code permissions जल्दी दिख जाती हैं।
मुफ़्त PDF: Claude Code cheatsheet
Email डालें और commands, review habits तथा safe workflow वाली एक-page PDF पाएँ.
हम आपका data सुरक्षित रखते हैं और spam नहीं भेजते.
लेखक के बारे में
Masa
Claude Code workflow और team adoption पर काम करने वाला engineer.
संबंधित लेख
Claude Code permission safety ladder: access धीरे-धीरे बढ़ाएं
read-only से limited edits, proof commands और deploy checks तक permission बढ़ाने की सुरक्षित ladder.
Claude Code Small PR Proof Pack: छोटे PR को review-ready बनाना
Claude Code PR के लिए diff, checks, public URL, CTA path और rollback वाला practical proof pack.
Claude Code Review Gate Before Commit: diff, test, public URL और CTA जांच
Claude Code से commit से पहले review gate बनाएं: diff, build, public URL, Gumroad, consultation, tests और unrelated files।