Claude Code hook ایک کمانڈ ہے جسے ایپ سیشن کے مقررہ موقع پر چلاتی ہے۔ یہ رہنما پروجیکٹ کے دائرے میں ایک SessionStart hook شامل کرتا ہے، جو موجودہ Git برانچ پڑھ کر گفتگو شروع یا دوبارہ جاری ہونے پر سیاق کی مختصر سطر دیتا ہے۔ اس کی بنیاد Anthropic کا موجودہ hook حوالہ ہے، جسے 19 اکتوبر 2026 کو جانچا گیا۔ BIG CHANGE نے Node سے اسکرپٹ براہ راست جانچا اور ترتیبات کا JSON دیکھا؛ ہم نے Claude Code hook نہیں چلایا اور نہ ماڈل کا جواب آزمایا۔

بڑی تبدیلی

  • کیا بدلا: پروجیکٹ کا یہ SessionStart hook Claude Code میں گفتگو شروع یا دوبارہ جاری ہونے پر Git برانچ کی مختصر سطر دیتا ہے۔
  • یہ کیوں اہم ہے: ہر مرتبہ خود پیسٹ کیے بغیر آغاز یا دوبارہ جاری ہونے پر موجودہ برانچ سیشن کے سیاق تک پہنچتی ہے۔
  • کس بات پر نظر رکھیں: سیاق کسی قاعدے کو نافذ نہیں کرتا اور ماڈل کے جواب کی ضمانت نہیں دیتا۔ اپنے قابل اعتماد پروجیکٹ میں آغاز اور دوبارہ جاری ہونے پر اس کی حقیقی فراہمی جانچیں۔

نصب کرنے سے پہلے

ایسا Git پروجیکٹ استعمال کریں جسے بدلنے کی اجازت ہو۔ اسی ٹرمینل میں Claude Code، Node.js اور Git دستیاب ہوں، اور پروجیکٹ کی .claude/settings.json فائل بدلنے کا اختیار ہو۔ جانچیں node --version، git --version اور claude --version۔ تیاری کے کمپیوٹر پر Claude Code 2.1.301 اور Node 24.19.0 تھے؛ یہ مشاہدہ کردہ نسخے ہیں، کم از کم تقاضے نہیں۔

ماڈل کو بھیجنے سے پہلے برانچ کا نام دیکھیں۔ اس میں کلائنٹ، ٹکٹ یا واقعے کا نام ہو سکتا ہے۔ حروف چھانٹنے اور متن مختصر کرنے سے یہ معنی ختم نہیں ہوتے۔ مثال صرف تب نصب کریں جب برانچ کا نام ماڈل کے سیاق کے لیے منظور ہو۔ ورنہ اسکرپٹ بدل کر منظور شدہ غیر حساس حالت دکھائیں اور تنصیب سے پہلے تبدیلی کا جائزہ لیں۔ Anthropic کی ڈیٹا استعمال کی دستاویز سروس میں ڈیٹا سنبھالنے کا طریقہ بتاتی ہے؛ اپنے پروجیکٹ کی اجازتیں بھی نافذ کریں۔

Hook کمانڈز آپ کے صارف اختیارات سے چلتی ہیں۔ فعال کرنے سے پہلے موجودہ پروجیکٹ اور صارف کے hook، ادارے کی پالیسی اور پوری اسکرپٹ دیکھیں۔ پروجیکٹ کی ترتیبات ریپوزٹری میں کمٹ ہو سکتی ہیں؛ .claude/settings.local.json مقامی رہتی ہے۔ مثال پروجیکٹ کی ترتیبات والی فائل استعمال کرتی ہے تاکہ ترتیب اسی پروجیکٹ تک محدود ہو۔

دونوں فائلیں نصب کریں

  1. پروجیکٹ میں .claude/hooks/ بنائیں۔ پورا بلاک .claude/hooks/session-context.cjs کے نام سے محفوظ کریں۔
JavaScript
'use strict';

const { execFileSync } = require('node:child_process');

const project = process.env.CLAUDE_PROJECT_DIR;
if (!project) {
  process.stderr.write('CLAUDE_PROJECT_DIR is unavailable\n');
  process.exit(1);
}

try {
  const raw = execFileSync('git', ['-C', project, 'branch', '--show-current'], {
    encoding: 'utf8',
    timeout: 1500,
    maxBuffer: 4096,
    stdio: ['ignore', 'pipe', 'pipe'],
  }).trim();
  const branch = raw ? raw.replace(/[^A-Za-z0-9._/-]/g, '_').slice(0, 80) : 'detached HEAD';
  process.stdout.write(`Current project branch: ${branch}\n`);
} catch {
  process.stderr.write('Could not read the project branch; check Git and project path\n');
  process.exit(1);
}

Git کی ذیلی پروسیس کی حد 1.5 سیکنڈ اور آؤٹ پٹ بفر 4,096 بائٹ ہے۔ detached HEAD کی طرح برانچ کا خالی نتیجہ detached HEAD بن جاتا ہے۔ پروجیکٹ کا راستہ نہ ملنے یا Git کی ناکامی پر مختصر stderr تشخیص اور ایگزٹ کوڈ 1 ملتا ہے۔

  1. اپنی موجودہ .claude/settings.json کھولیں۔ نیچے کی hooks.SessionStart اندراج دوسری ترتیبات اور hook گروپس میں ملائیں؛ پہلے اندراج محفوظ رکھیں۔ بلاک جائزہ شدہ پیکٹ کا مکمل settings.example.json دکھاتا ہے۔ اگر فائل میں پہلے SessionStart اندراج موجود ہیں تو ان کی صف بدلنے کے بجائے اس میں یہ گروپ شامل کریں۔
JSON
{
  "hooks": {
    "SessionStart": [
      {
        "matcher": "startup|resume",
        "hooks": [
          {
            "type": "command",
            "command": "node",
            "args": ["${CLAUDE_PROJECT_DIR}/.claude/hooks/session-context.cjs"],
            "timeout": 5
          }
        ]
      }
    ]
  }
}

Matcher نئے اور دوبارہ جاری سیشن دونوں کو شامل کرتا ہے۔ Anthropic clear، compact اور fork کو بھی SessionStart ذرائع بتاتا ہے؛ یہ مثال انہیں جان بوجھ کر چھوڑتی ہے۔ args فیلڈ exec شکل چنتی ہے: Claude Code node کو حل شدہ پروجیکٹ اسکرپٹ پاتھ کے ساتھ ایک دلیل کے طور پر چلاتا ہے، shell quoting یا parsing کے بغیر۔ Windows پر node.exe کو حقیقی executable ملنا چاہیے؛ .cmd shim exec شکل کے لیے مناسب نہیں۔ کمانڈ کی پانچ سیکنڈ کی hook حد، اسکرپٹ کی 1.5 سیکنڈ کی Git حد سے الگ ہے۔

پہلے اسکرپٹ، پھر Claude Code جانچیں

  1. Claude Code کھولنے سے پہلے پروجیکٹ ٹرمینل میں اسکرپٹ چلائیں اور اس کے آؤٹ پٹ کو Git سے ملائیں۔ PowerShell میں:
PowerShell
$env:CLAUDE_PROJECT_DIR = (Get-Location).Path
node .claude/hooks/session-context.cjs
git branch --show-current

Bash میں:

Terminal
CLAUDE_PROJECT_DIR="$PWD" node .claude/hooks/session-context.cjs
git branch --show-current

اسکرپٹ کے stdout میں بالکل ایک سطر متوقع ہے، Current project branch: BRANCH، جہاں BRANCH اسکرپٹ کے حروف چھانٹنے اور 80 حروف کی حد کے بعد Git کا نتیجہ ہے۔ Detached HEAD پر Current project branch: detached HEAD چھپتا ہے۔ براہ راست جانچ صرف اس ٹرمینل میں مقامی اسکرپٹ کے کام کرنے کو ثابت کرتی ہے۔ ہماری تیاری کی جانچ میں عام برانچ Git سے ملی؛ غائب اور غلط پروجیکٹ راستوں سے خالی stdout، stderr پیغام اور ایگزٹ 1 ملا۔ ہم نے طویل نام کی حد اور detached HEAD کا متبادل سورس میں دیکھا مگر ان صورتوں کو چلایا نہیں۔

  1. قابل اعتماد پروجیکٹ میں نئی انٹرایکٹو Claude Code پروسیس claude --debug-file STARTUP_PRIVATE_LOG کے ساتھ شروع کریں، اور اپنے کنٹرول والا نجی راستہ استعمال کریں۔ workspace trust قبول کرنے سے پہلے پروجیکٹ اور صارف کے hook دیکھیں۔ debug لاگ میں SessionStart ایونٹ، ذریعہ startup، منتخب اسکرپٹ پاتھ، ایگزٹ حالت اور آؤٹ پٹ کی ہینڈلنگ دیکھیں۔ Claude سے پوچھیں اسے برانچ کا کون سا سیاق ملا، مگر ٹول استعمال یا خود Git پڑھنے کی اجازت نہ دیں۔ جواب اور debug ریکارڈ براہ راست نتیجے سے ملائیں۔ Hook stdout Claude کے سیاق میں جاتا ہے؛ مرئی UI میں پیغام بننا لازم نہیں۔
  2. اس سیشن سے نکلیں۔ الگ پروسیس میں claude --debug-file RESUME_PRIVATE_LOG --resume سے دوبارہ جاری کریں، پھر SessionStart resume ایونٹ دیکھیں اور ٹول یا Git دوبارہ پڑھے بغیر سوال کی جانچ دہرائیں۔ دونوں debug لاگ نجی رکھیں؛ ان سے پروجیکٹ کی تفصیل ظاہر ہو سکتی ہے۔ غیر انٹرایکٹو -p یا SDK رن میں وہی workspace-trust سوال نہیں آتا اور ریپوزٹری کے hook خود بخود چل سکتے ہیں، اس لیے یہ جانچ انٹرایکٹو طریقے سے کریں۔ Anthropic کے مطابق فائل نگران عموماً hook ترتیبات کی تبدیلی لے لیتا ہے، مگر نئی پروسیس آغاز اور دوبارہ جاری ہونے کا زیادہ واضح ٹیسٹ دیتی ہے۔

بعد میں معمول کے پروجیکٹ کام سے برانچ بدلے تو براہ راست جانچ اور نیا سیشن دہرائیں کہ سطر بدلی یا نہیں۔ محض اس رہنما کو آزمودہ کہنے کے لیے برانچ نہ بدلیں۔

اگر نہ چلے

اسکرپٹ کے براہ راست نتیجے سے شروع کریں، پھر JSON ملانا، SessionStart کا ہجّا، startup|resume matcher، پروجیکٹ روٹ پاتھ، node اور git کی دستیابی، workspace trust اور debug غلطیاں دیکھیں۔ CLAUDE_PROJECT_DIR نہ ہو تو CLAUDE_PROJECT_DIR is unavailable stderr پر چھپتا ہے۔ غلط پروجیکٹ پاتھ یا Git ناکامی پر Could not read the project branch; check Git and project path چھپتا ہے۔ دونوں ایگزٹ 1 دیتے ہیں اور سیاق کی سطر نہیں چھاپتے۔ SessionStart کی ناکامی تشخیصی ہے اور کام نہیں روکتی؛ یہ کسی عمل کی اجازت روکنے کا دروازہ نہیں بن سکتی۔ Anthropic ٹول کے عمل کو قابو کرنے کے لیے PreToolUse بتاتا ہے، جو الگ ایونٹ ہے اور الگ جائزہ شدہ ڈیزائن چاہتا ہے۔

اسکرپٹ صرف مقامی Git چلاتی ہے، نیٹ ورک درخواست یا ماڈل کال نہیں کرتی۔ Claude Code کا آغاز، دوبارہ جاری ہونا اور سوال کی جانچ اکاؤنٹ، فراہم کنندہ یا ماڈل کا کوٹا خرچ کر سکتے ہیں؛ Anthropic کی لاگت رہنمائی میں موجودہ شرائط ہیں۔ یہ رہنما مقررہ قیمت نہیں بتاتا اور ادا شدہ سیشن ٹیسٹ رپورٹ نہیں کرتا۔

گفتگو چلنے کے بعد ایک الگ کام کے لیے ہمارا Claude Code سیشن کا سیاق دیکھنے اور جاری رکھنے کا رہنما سیاق کی جانچ اور گفتگو آگے بڑھانا سمجھاتا ہے۔ وہ اس ابتدائی hook کی ترتیب نہیں بناتا۔

ذرائع اور مزید مطالعہ

  • Anthropic، Claude Code hook حوالہ — موجودہ بنیادی وضاحت 19 اکتوبر 2026 کو جانچی گئی۔ یہ SessionStart ذرائع اور matcher، exec شکل args، پاتھ placeholder، stdout سیاق، ترتیبات دوبارہ لوڈ کرنا، اعتماد، debug لاگ اور کام نہ روکنے والی ناکامی بتاتی ہے۔ یہ دستاویز ہے، BIG CHANGE کا hook چلانا نہیں۔
  • Anthropic، hook سے اعمال خودکار کریں — hook سیٹ اپ اور جانچ کا سرکاری طریقہ۔ اوپر کی عین اسکرپٹ اور ترتیبات اس رہنما کے لیے جائزہ شدہ محدود BIG CHANGE مثال ہیں، فروخت کنندہ کے نقل شدہ ٹیسٹ نتائج نہیں۔
  • Anthropic، Claude Code سیٹ اپ — تنصیب اور ماحول کے تقاضے۔ مثال سے پہلے اپنے پلیٹ فارم کی موجودہ ہدایات دیکھیں۔
  • Anthropic، Claude Code ڈیٹا استعمال — برانچ کی معلومات ماڈل سیاق میں بھیجنے سے پہلے دیکھنے کے لیے فراہم کنندہ کی موجودہ ڈیٹا شرائط؛ پروجیکٹ کا اختیار الگ فیصلہ ہے۔
  • Anthropic، لاگت مؤثر طور پر سنبھالیں — انٹرایکٹو جانچ کے لیے اکاؤنٹ اور استعمال کی موجودہ رہنمائی۔ مقامی Git اسکرپٹ خود ماڈل یا نیٹ ورک سے درخواست نہیں کرتی۔