Claude Code 2.1.221 এখন Linux এবং WSL2 ব্যবহারকারীদের একটি sandboxed command ফাইল পড়ার আগেই credential ফাইলগুলো mask করার সুবিধা দিচ্ছে। এই ফিচারটি command-কে একটি ক্ষতিকারক নয় এমন sentinel copy প্রদান করে এবং শুধুমাত্র যখন একটি অনুমোদিত request একটি proxy-এর মাধ্যমে যায়, তখনই আসল secret-টি পরিবর্তন করে বসিয়ে দেয়।

মাস্কিং ফ্লো (masking flow) দেখতে কেমন

  1. Sentinel copy – যখন কোনো ফাইল মাস্কিংয়ের জন্য চিহ্নিত করা হয়, Claude Code একটি ডুপ্লিকেট ফাইল তৈরি করে যাতে আসল secret-এর পরিবর্তে একটি placeholder string থাকে।
  2. Proxy swap – Sandbox-টি একটি TLS-terminating proxy-এর পেছনে চলে। যদি sandbox এমন একটি request পাঠায় যা injectHosts লিস্টের কোনো এন্ট্রির সাথে মিলে যায়, তবে request-টি মেশিন থেকে বের হওয়ার আগেই proxyটি placeholder-টিকে আসল token দিয়ে পরিবর্তন করে দেয়।
  3. Error handling – যদি extraction regex কোনো secret খুঁজে পেতে ব্যর্থ হয়, তবে sandbox আসল ফাইলটি উন্মুক্ত অবস্থায় সামনে এগিয়ে না গিয়ে প্রক্রিয়াটি বাতিল (abort) করতে পারে।

এই পদ্ধতিটি শুধুমাত্র Linux এবং WSL2-তে কাজ করে; macOS-এ বর্তমানে এটি ডিফল্টভাবে 'hard deny' হিসেবে থাকে, যার অর্থ হলো sandbox ফাইলটি একেবারেই পড়তে পারে না।

নিরাপদ রোলআউটের (rollout) জন্য চেকলিস্ট

ভার্সন যাচাই করুন

  • আপনি Claude Code 2.1.221 বা তার পরবর্তী ভার্সন ব্যবহার করছেন কিনা তা নিশ্চিত করুন। টার্মিনালে ভার্সন স্ট্রিং দেখাটাই একমাত্র নির্ভরযোগ্য পদ্ধতি; package lock ফাইল বিভ্রান্তিকর হতে পারে।

ডিসপোজেবল (disposable) টোকেন ব্যবহার করুন

  • আপনার প্রধান GitHub বা ক্লাউড credentials দিয়ে কখনোই পরীক্ষা-নিরীক্ষা করবেন না। একটি স্বল্পস্থায়ী (short-lived) টোকেন তৈরি করুন যা একটি ক্ষতিকারক নয় এমন “canary” endpoint-কে নির্দেশ করে এবং কিছু ভুল হলে তা সাথে সাথে বাতিল (revoke) করে দিন।

সঠিক মাস্কিং মোড (masking mode) বেছে নিন

মোড (Mode) কখন ব্যবহার করবেন
File Deny কঠোরভাবে ব্লক করে; যেকোনো read করার চেষ্টা ব্যর্থ হবে।
Whole-File Mask ফাইলে একটি মাত্র secret থাকে (যেমন, একটি plain-text API key)।
Structured Mask ফাইলে secret-এর সাথে অন্যান্য ডেটা (JSON, YAML, .netrc) মিশ্রিত থাকে। extract মোড এবং এমন একটি regex ব্যবহার করুন যা secret-টিকে group 1-এ ক্যাপচার করে। এটি ক্লায়েন্ট প্রোগ্রামের জন্য আশেপাশের সিনট্যাক্স (syntax) সঠিক রাখে।

কঠোর এরর রুলস (error rules) সেট করুন

  • onExtractNoMatch-কে error হিসেবে সেট করুন। যদি regex না মিলে, তবে sandbox থেমে যাবে। এটিকে ডিফল্ট warn হিসেবে রাখলে আসল ফাইলটি অজান্তেই বেরিয়ে যাওয়ার সম্ভাবনা থাকে।

TLS termination চালু করুন

  • পরিবর্তন (swap) করার জন্য proxy-কে অবশ্যই TLS terminate করতে হবে। TLS termination ছাড়া proxy-টি request payload দেখতে পাবে না এবং প্রতিস্থাপন (substitution) কখনোই ঘটবে না।

হোস্ট স্কোপ (host scope) সীমিত করুন

  • আপনার allowedDomains থেকে সুনির্দিষ্ট হোস্টনেম দিয়ে injectHosts পূর্ণ করুন। *.example.com-এর মতো ওয়াইল্ডকার্ড (wildcards) এড়িয়ে চলুন; বিস্তৃত প্যাটার্ন অ্যাটাক সারফেস (attack surface) বাড়িয়ে দেয় এবং মাস্কিংয়ের উদ্দেশ্য ব্যাহত করে।

ফলাফল যাচাই করুন

  • আসল টোকেনটি কোথাও দেখা যাচ্ছে কিনা তা দেখার জন্য লগ (logs), প্রসেস আর্গুমেন্ট এবং এরর মেসেজগুলো স্ক্যান করুন। ওই আর্টিফ্যাক্টগুলোতে (artefacts) শুধুমাত্র sentinel-টিই মান হিসেবে থাকা উচিত।

যে সীমাবদ্ধতাগুলো আপনার মনে রাখা প্রয়োজন

মাস্কিং টোকেনটিকে শুধুমাত্র sandboxed command-এর ফাইল-সিস্টেম ভিউ থেকে সুরক্ষিত রাখে। এটি command-কে যেকোনো নেটওয়ার্ক কল করা থেকে বিরত রাখতে পারে না, কিংবা Claude-এর বিল্ট-ইন টুলগুলোকেও রক্ষা করে না যেগুলোর প্রিভিলেজড অ্যাক্সেস (privileged access) থাকতে পারে।

মূল কথা

Claude Code 2.1.221-এর credential-masking ফিচারটি Linux এবং WSL2 ডেভেলপারদের sandboxed প্রসেস থেকে সিক্রেটগুলো দূরে রাখার একটি ব্যবহারিক উপায় প্রদান করে।