Claude Code session পুনরায় চালু ও history দেখুন
নাম, ID বা picker ব্যবহার করে Claude Code session পুনরায় চালু করুন এবং agent চলা machine-এ সংরক্ষিত plaintext transcript-এর অবস্থান জানুন।
Claude Code session কীভাবে পুনরায় চালু করবেন
সাম্প্রতিক conversation বর্তমান directory থেকে পুনরায় চালু করতে claude --continue চালান। অথবা তালিকা থেকে পুরোনো conversation বেছে নিতে claude --resume চালান। ইতিমধ্যে চালু থাকা session-এর ভিতর থেকে প্রস্থান না করে অন্য conversation-এ যেতে /resume command ব্যবহার করুন। সংক্ষিপ্ত রূপ হলো -c এবং -r।
claude --continue
claude --resume
claude --resume auth-refactorআপনি যদি session-এর নাম বা ID আগে থেকেই জানেন, সেটি argument হিসেবে দিন। তাহলে Claude Code picker না দেখিয়ে সরাসরি সেই session-এ চলে যাবে।
নিচের সব তথ্য August 2026 অনুযায়ী official session documentation-এর সঙ্গে সামঞ্জস্যপূর্ণ। Claude Code ঘন ঘন release হয়। Version পরিবর্তনের সঙ্গে flag-এর নাম ও keyboard shortcut-ও বদলাতে পারে। তাই এখানে দেওয়া তথ্য আপনার terminal-এ প্রদর্শিত তথ্যের সঙ্গে না মিললে claude --help এবং ওই documentation-কে কর্তৃত্বপূর্ণ উৎস হিসেবে বিবেচনা করুন।
একটি session আসলে কী
একটি session হলো একটি project directory-এর সঙ্গে সংযুক্ত একটি সংরক্ষিত conversation। এতে সম্পূর্ণ message history থাকে, যার মধ্যে Claude যে tool call করেছে এবং সেই call-গুলো যে ফলাফল ফিরিয়েছে সেগুলিও অন্তর্ভুক্ত। আপনি কাজ করার সময় Claude Code এটি ক্রমাগত disk-এ লিখে রাখে, কাজের শেষে একবারে নয়। তাই terminal বন্ধ হয়ে গেলেও বা SSH connection বিচ্ছিন্ন হলেও conversation টিকে থাকে।
Resume করলে শুধু text ফিরে আসে না। সম্পূর্ণ conversation history ফিরে আসে। এর সঙ্গে session-এ ব্যবহৃত model এবং --agent ব্যবহার করে শুরু করা হলে সেই subagent-ও ফিরে আসে। Permission mode-ও ফিরে আসে। তবে নিরাপত্তার কারণে কিছু ব্যতিক্রম আছে: plan mode এবং bypass-permissions mode কখনো restore করা হয় না। তাই session এই mode-গুলোর কোনো একটিতে থাকলে resume করার সময় সেটি নতুন session যে mode-এ শুরু হতো, সেই mode-এ ফিরে আসে।
কিছু বিষয় ফিরে আসে না, কারণ সেগুলো সংরক্ষিত state নয়, বরং launch-time flag। --add-dir দিয়ে যোগ করা directory এবং --mcp-config, --settings ও --plugin-dir-এর মতো option resume করার সময় আবার দিতে হয়। settings.json-এর মতো settings file launch-এর সময় পুনরায় পড়া হয়। তাই এসব file-এ থাকা কোনো setting আবার দিতে হয় না।
VPS-এ session history কেন বেশি গুরুত্বপূর্ণ
এখানে এমন একটি বিষয় আছে, যা অনেককেই অবাক করে। Transcript যে মেশিনে agent চলেছিল, সেই মেশিনেই লেখা হয়। এটি আপনার account-এ সংরক্ষিত থাকে না এবং cloud-এ sync হয় না। এটি ওই মেশিনের disk-এর একটি file।
তাই VPS-এর একটি tmux window-তে রেখে যাওয়া session আপনার laptop-এর picker-এ দেখা যায় না, আর laptop-এর session VPS-এ দেখা যায় না। কোনো তথ্যই এক মেশিন থেকে অন্য মেশিনে যায় না। বেশিরভাগ মানুষের মতো আপনি যদি VPS-এ tmux-এ Claude Code চালান, তাহলে আপনার প্রকৃত conversation history server-এই জমা হয়। আর আপনি local machine-এ যে picker দেখেন, সেখানে ভিন্ন এবং অনেক ছোট একটি তালিকা থাকে।
একই বিভাজন বিভিন্ন interface-এর ক্ষেত্রেও প্রযোজ্য। Desktop app এবং VS Code extension—উভয়ই নিজেদের session history সংরক্ষণ করে। কোনোটিই CLI-এর history নয়। Claude Code on the web-ও নিজের history সংরক্ষণ করে।
একটি মেশিনের মধ্যে search-এর পরিধি আপনার ধারণার চেয়ে বেশি। claude --resume <session-id> প্রথমে বর্তমান project directory এবং তার git worktree-গুলোতে খোঁজে। এরপর একই মেশিনের অন্য সব project-এ খোঁজে। মনে রাখার বিষয় হলো: “সেই মেশিনে”। অন্য host-এর session ID-এর কোনো ফল পাওয়া যায় না, এবং Claude Code আপনাকে No conversation found with session ID: <session-id> দিয়ে তা জানায়।
Claude Code সেশনের ইতিহাস কোথায় সংরক্ষণ করে
ডিফল্টভাবে, transcript আপনার Claude Code configuration directory-এর মধ্যে ~/.claude/projects/<project>/<session-id>.jsonl ধরনের একটি path-এ থাকে।
<project> হলো আপনার working directory path, যেখানে প্রতিটি alphanumeric নয় এমন character hyphen দিয়ে প্রতিস্থাপিত হয়। তাই /home/deploy/apps/api-এ শুরু করা একটি session -home-deploy-apps-api নামের directory-তে সংরক্ষিত হয়। রূপান্তরিত নামটি 200 characters-এর বেশি হলে Claude Code সেটিকে সংক্ষিপ্ত করে full path-এর একটি hash যোগ করে। এতে directory-এর নাম filesystem limit-এর মধ্যে থাকে।
ফাইলটি JSONL format-এ থাকে। প্রতি লাইনে একটি JSON object থাকে। প্রতিটি line একটি message, tool use বা metadata entry ধারণ করে। এটি পাঠযোগ্য text, তাই file-টি পড়া নিরাপদ।
তবে এর ওপর ভিত্তি করে parser লেখা উচিত নয়। Entry format Claude Code-এর অভ্যন্তরীণ বিষয় এবং version পরিবর্তনের সঙ্গে এটি বদলে যায়। তাই কোনো update-এর পর সরাসরি এই file পড়া script কাজ করা বন্ধ করতে পারে। Anthropic-এর নিজস্ব documentation-এ পরিবর্তে /export অথবা documented script interface ব্যবহার করতে বলা হয়েছে। ঠিক এই কারণেই এটি সঠিক পরামর্শ।
দুটি setting এই অবস্থান ও সংরক্ষণকাল পরিবর্তন করে। CLAUDE_CONFIG_DIR পুরো config directory অন্যত্র সরিয়ে দেয়। এর মাধ্যমে transcript আলাদা volume বা encrypted volume-এ রাখা যায়। cleanupPeriodDays, settings.json-এর মধ্যে, transcript কত দিন রাখা হবে তা নিয়ন্ত্রণ করে। এর default 30 days এবং minimum 1।
এই transcript ফাইলগুলোর ভিতরে আসলে কী থাকে
প্রতিটি tool-এর ফলাফল রেকর্ড করা হয়। তাই একটি transcript-এ Claude যে ফাইলগুলোর বিষয়বস্তু পড়েছে এবং যে command-গুলোর output চালিয়েছে, সেগুলো থাকে। Anthropic-এর data usage page-এ বিষয়টি স্পষ্টভাবে বলা হয়েছে: Claude Code session transcript-গুলো plaintext আকারে স্থানীয়ভাবে ~/.claude/projects/-এর অধীনে সংরক্ষণ করে।
সার্ভারে এর অর্থ কী, তা বিবেচনা করুন। কোনো service কেন start হচ্ছে না তা বোঝার জন্য Claude যদি একটি .env ফাইল পড়ে, তাহলে সেই ফাইলের বিষয়বস্তু এখন আপনার home directory-র একটি JSONL ফাইলে রয়েছে। কোনো command যদি একটি connection string print করে, সেটিও সেখানে থাকবে। কিছু ফাঁস হয়নি। Transcript-এ যা ঘটেছে তা রেকর্ড করা হয়েছে। এটাই transcript-এর উদ্দেশ্য, এবং এই কারণেই এটিকে আপনার threat model-এর অংশ হিসেবে বিবেচনা করা উচিত।
- Backups:
/homeবা/root-এর সাধারণ backup নিলে আপনার transcript-গুলো backup যেখানে সংরক্ষিত হয় সেখানে কপি হয়ে যাবে। Exclusion যোগ করুন, অথবা মেনে নিন যে আপনার prompt এবং ফাইলের বিষয়বস্তুর কপি এখন backup store-এ রয়েছে। - Snapshots এবং images: যে কারণেই নেওয়া হোক, একটি VPS snapshot-এ পুরো directory থাকে। দ্বিতীয় server তৈরির জন্য clone করা image-এর ক্ষেত্রেও একই কথা প্রযোজ্য।
- এই server-এর অন্যান্য account: permission নিরাপদ ধরে নেওয়ার পরিবর্তে
ls -ld ~/.claude ~/.claude/projectsদিয়ে নিজেই mode পরীক্ষা করুন। - ইচ্ছাকৃত upload:
/feedbackcommand ইচ্ছাকৃতভাবে Anthropic-এ conversation history পাঠায়, এবং/bugও/shareএকই path-এর মাধ্যমে report করে। এগুলো আপনার বেছে নেওয়া কাজ। তাই confirm করার আগে আপনি কীতে সম্মতি দিচ্ছেন তা বুঝে নিন।
আপনি যদি কোনো transcript সংরক্ষিত না থাকাই চান, CLAUDE_CODE_SKIP_PROMPT_HISTORY transcript লেখা বন্ধ করে এবং একটি non-interactive claude -p run-এর ক্ষেত্রে --no-session-persistence transcript লেখা বন্ধ করে। যেকোনো একটি সেট করার আগে এর trade-off স্পষ্টভাবে বুঝে নিন। Resume পড়ার জন্য transcript প্রয়োজন। তাই transcript না থাকলে resume-ও থাকবে না।
পুরোনো কথোপকথন কীভাবে খুঁজবেন
claude --resume দিয়ে picker খুলুন, অথবা চলমান session-এর ভেতর থেকে /resume ব্যবহার করুন। প্রতিটি row-তে session-এর নাম দেখানো হয়, যদি আপনি নাম সেট করে থাকেন। নাম সেট না করলে একটি generated title দেখানো হয়। এর সঙ্গে শেষ activity-এর পর কেটে যাওয়া সময়, git branch এবং file size-ও দেখানো হয়।
picker-এ search করা যায়। তালিকা filter করতে / চাপুন, অথবা সরাসরি টাইপ করা শুরু করুন। তালিকা সম্প্রসারিত করার জন্য যেসব shortcut জানা উপকারী, সেগুলো হলো: Ctrl+A এই মেশিনের সব project-এর session দেখায়, Ctrl+W বর্তমান repository-এর সব worktree দেখায়, এবং Ctrl+B শুধু বর্তমান git branch-এর session filter করে। কোনো session বেছে নেওয়ার আগে তার content preview করতে Space চাপুন। highlighted session-এর নাম পরিবর্তন করতে Ctrl+R চাপুন।
Session-এর নাম দিলে এই কাজগুলো অনেক সহজ হয়। claude -n auth-refactor দিয়ে শুরুতেই একটি session-এর নাম দিন, অথবা কথোপকথনটি বাস্তব কাজের রূপ নিয়েছে বুঝতে পারলে মাঝপথে /rename auth-refactor চালান। এরপর shell থেকেই নাম ব্যবহার করে named session resume করা যায়।
Unnamed session-এও একটি generated title থাকে। আপনার প্রথম prompt-এর সারাংশ তৈরি করতে background request-এর মাধ্যমে একটি ছোট, দ্রুত model এই title লেখে। এই title picker-এর row শনাক্ত করতে সাহায্য করে, তবে এটি resume handle নয়। claude --resume <name> শুধু আপনার নিজের সেট করা নামের সঙ্গে match করে।
সঠিক session খুঁজতে transcript-এ grep করা
কখনও আপনার একটি বাক্যাংশ মনে থাকে, কিন্তু আর কিছু মনে থাকে না। Transcript-গুলো text format-এ থাকে, তাই সেগুলো search করুন।
grep -rl "nftables" ~/.claude/projects/এটি মিলে যাওয়া transcript-এর path দেখায়। .jsonl extension বাদ দিলে filename-টিই session ID, এবং claude --resume <session-id> এটি গ্রহণ করে। কোন session দরকার তা নির্ধারণ করতে grep ব্যবহার করুন। এরপর session-টি resume করুন বা প্রকৃতপক্ষে পড়ার জন্য export করুন।
দুটি গুরুত্বপূর্ণ সতর্কতা আছে। Content JSON-escaped থাকে। তাই quote character-যুক্ত কোনো বাক্যাংশ, অথবা line break-এর কারণে বিভক্ত কোনো বাক্যাংশ literal string হিসেবে নাও মিলতে পারে। আর কোনো tool result-এর ভেতরে match পাওয়া গেলে এর অর্থ Claude সেই text দেখেছে; কেউ সেটি type করেছে, এমন নয়।
একটি conversation পড়া এবং export করা
/export বর্তমান conversation-কে plain text হিসেবে দেখায়। এতে message এবং tool output JSON-এর পরিবর্তে পাঠযোগ্যভাবে লেখা হয়। কোনো argument না দিলে এটি clipboard বা file বেছে নেওয়ার একটি menu খোলে। filename দিলে /export handover.txt সরাসরি সেই path-এ লেখে। server থেকে laptop-এ conversation স্থানান্তর করা বা সেটি কোনো ticket-এর সঙ্গে সংযুক্ত করার জন্য এটাই সঠিক পদ্ধতি।
স্বয়ংক্রিয় কাজের জন্য স্থিতিশীল থাকার উদ্দেশ্যে তৈরি interface ব্যবহার করুন। Hook এবং status line command input হিসেবে একটি transcript_path field পায়। তাই session শেষ হলে একটি SessionEnd hook transcript archive করতে পারে। কোনো stored session না খুলেও সেটিকে একটি প্রশ্ন করা যায়:
claude -p --resume <session-id> --output-format json "summarize what we changed" | jq -r '.result'এটি পুরোনো conversation-এ একটি follow-up prompt পাঠায় এবং structured JSON ফেরত দেয়। পরবর্তী release-এ পরিবর্তিত হতে পারে এমন JSONL format parse করার চেয়ে এটি অনেক বেশি নির্ভরযোগ্য ভিত্তি।
নতুন করে শুরু করাই যখন পুনরায় চালিয়ে যাওয়ার চেয়ে ভালো
পুনরায় চালু করলে পুরো ইতিহাস ফিরে আসে, এবং পরবর্তী প্রতিটি অনুরোধে সেই পুরো ইতিহাসই পাঠানো হয়। গতকাল চার ঘণ্টা চলা একটি conversation আজ চালিয়ে যাওয়া ব্যয়বহুল; দীর্ঘ session-এ token usage কীভাবে জমা হয়-এ এই খরচের প্রকৃত কারণ ব্যাখ্যা করা হয়েছে।
Claude Code কখনও কখনও মাঝামাঝি একটি বিকল্প দেয়। Pro বা Max plan-এ প্রায় এক ঘণ্টা idle থাকা এবং 100,000-এর বেশি tokens থাকা একটি session resume করলে, আপনার প্রথম message-এর আগে একটি dialog খোলে। ততক্ষণে prompt cache-এর মেয়াদ শেষ হয়ে যায়। তাই আপনি যে option-ই বেছে নিন, পরবর্তী request-এ একবার পুরো history আবার process করা হয়।
- Resume from summary সঙ্গে সঙ্গে একটি compaction চালায়। ফলে পরবর্তী request-গুলোতে পুরো history-এর বদলে summary পাঠানো হয়। প্রতি request-এর খরচ কমে, তবে summary থেকে বাদ পড়া তথ্য আর পাওয়া যায় না।
- Resume full session as-is conversation-টি কোনো পরিবর্তন ছাড়াই load করে। এতে প্রতিটি detail বজায় থাকে, কিন্তু প্রতি request-এর খরচ conversation-এর আকার অনুযায়ী বাড়ে।
তৃতীয় একটি option session-টি full অবস্থায় resume করে এবং পরবর্তী resume-গুলোর সময় dialog দেখানো বন্ধ করে।
সিদ্ধান্ত নেওয়ার বিষয়টি যতটা জটিল মনে হয়, বাস্তবে ততটা নয়। আপনি যে পরবর্তী বিষয়টি লিখতে যাচ্ছেন, তা আগে কী বলা হয়েছে তার ওপর নির্ভর করলে resume করুন। নির্ভর না করলে নতুন করে শুরু করুন। Drift চেনা সহজ, যদি এর লক্ষণ খেয়াল করেন: Claude এক ঘণ্টা আগে মুছে ফেলা কোনো file-এর উল্লেখ করছে, অথবা session-এর শুরুতেই নেওয়া সিদ্ধান্ত নিয়ে আবার যুক্তি দিচ্ছে। এটি stale context। এটি সঙ্গে রাখলে একই সঙ্গে token এবং নির্ভুলতা—দুটিই ক্ষতিগ্রস্ত হয়।
পুরোনো conversation-এর দরকারি অংশ যদি এমন কোনো decision বা fact হয় যা পরে আবার প্রয়োজন হবে, সেটি বহন করার জন্য resume-এর ওপর নির্ভর করবেন না। এমন জায়গায় লিখে রাখুন যা প্রতিটি session দেখতে পারে। Claude Code-এর memory files এই কাজের জন্যই ব্যবহৃত হয়।
এখানে /branch সম্পর্কেও জানা দরকার। এটি বর্তমান point পর্যন্ত conversation কপি করে এবং আপনাকে সেই copy-তে নিয়ে যায়। মূল conversation অক্ষত থাকে এবং picker-এ দেখানো হয়। প্রথম পদ্ধতিটি না হারিয়ে দ্বিতীয় পদ্ধতি চেষ্টা করতে এটি ব্যবহার করুন।
Resume, compaction এবং memory-এর মধ্যে পার্থক্য
এগুলোকে প্রায়ই একসঙ্গে গুলিয়ে ফেলা হয়, কিন্তু এগুলো ভিন্ন সমস্যা সমাধান করে।
Resume মানে আপনি কোনো conversation থেকে বের হয়ে গেলে, reboot করলে বা অন্য কাজে চলে গেলে সেটিকে আবার চালু করা। Compaction মানে live conversation-এর ভেতরের context window পরিচালনা করা: /compact Claude যে context ধরে রেখেছে, সেটিকে একটি summary দিয়ে প্রতিস্থাপন করে, ফলে পরবর্তী অনুরোধে কম token পাঠানো হয়। আপনার সমস্যা যদি context window পূর্ণ হয়ে যাওয়া হয়, তাহলে compaction ব্যবহার করুন। Claude Code-এর context window পরিচালনা করা বিষয়টি সঠিকভাবে ব্যাখ্যা করে।
Memory আবার আলাদা বিষয়। CLAUDE.md file এবং auto memory প্রতিটি session শুরুর সময় load হওয়া instruction ও fact ধরে রাখে। তাই এগুলো এমন কোনো conversation নয়, যেখানে আপনি ফিরে যান। বরং এগুলোতে আপনি তথ্য লিখে রাখেন, যাতে কোনো conversation-এ ফিরে যাওয়ার প্রয়োজন না হয়।
আপনি যদি একই সময়ে দুটি conversation চালিয়ে তাদের মধ্যে সমন্বয় করতে চান, তাহলে সেটি আলাদা একটি mechanism। দুটি session live থাকা অবস্থায় Claude Code session একে অপরকে message পাঠাতে পারে। এটি disk থেকে গতকালের session আবার চালু করার সমস্যা থেকে আলাদা।
FAQ
Claude Code আমার session history কোথায় সংরক্ষণ করে?
ডিফল্টভাবে এটি আপনার config directory-এর ~/.claude/projects/<project>/<session-id>.jsonl-এ সংরক্ষণ করে। এখানে <project> হলো working directory path, যেখানে alphanumeric নয় এমন অক্ষরগুলো hyphen দিয়ে প্রতিস্থাপিত হয়। প্রতিটি ফাইল JSONL ফরম্যাটের: প্রতি message, tool use বা metadata entry-এর জন্য এক লাইন করে একটি JSON object থাকে। CLAUDE_CONFIG_DIR config directory অন্য কোথাও সরিয়ে দেয়। আর settings.json-এর cleanupPeriodDays transcript কত দিন সংরক্ষণ করা হবে তা নির্ধারণ করে। ডিফল্ট সময়সীমা 30 দিন এবং সর্বনিম্ন 1 দিন।
আমার laptop-এর picker-এ VPS session দেখতে পাচ্ছি না কেন?
কারণ transcript যে মেশিনে agent চলেছে, সেই মেশিনের disk-এ লেখা হয়। এগুলো মেশিনগুলোর মধ্যে sync হয় না। VPS-এ tmux-এর ভিতরে করা কোনো conversation শুধু VPS-এই থাকে। SSH-এর মাধ্যমে সেখানেই সেটি resume করুন। অথবা স্থানীয়ভাবে record রাখতে চাইলে session-এর ভিতরে /export চালিয়ে text file-টি কপি করুন।
অন্য directory-তে শুরু করা session কি resume করতে পারি?
হ্যাঁ, যদি আপনার কাছে সেই session ID থাকে। claude --resume <session-id> প্রথমে বর্তমান project directory এবং তার git worktree-গুলোতে খোঁজে। এরপর একই মেশিনের অন্য সব project-এ খোঁজে। Picker-এর ভিতরে Ctrl+A মেশিনের সব project-এ তালিকা বিস্তৃত করে। Ctrl+W বর্তমান repository-এর সব worktree-তে তালিকা বিস্তৃত করে। কোনো মিল না পেলে Claude Code No conversation found with session ID: <session-id> দেখায়।
পুরোনো session resume করব, নাকি নতুন session শুরু করব?
পরবর্তী message যদি আগের conversation-এ যা বলা হয়েছে তার ওপর নির্ভর করে, তাহলে resume করুন। তা না হলে নতুন session শুরু করুন। কারণ resume করলে সম্পূর্ণ history reload হয় এবং পরবর্তী প্রতিটি request-এর সঙ্গে সেই history বহন করা হয়। Context drift-এর লক্ষণ খেয়াল করুন। কোনো session যদি আপনি ইতিমধ্যে মুছে ফেলা file-এর উল্লেখ করতে থাকে, তাহলে সেটি stale context বহন করছে। এতে প্রতিটি turn-এ আপনার token ব্যবহার এবং ফলাফলের নির্ভুলতা ক্ষতিগ্রস্ত হয়।
Claude Code-কে disk-এ transcript লেখা থেকে বিরত রাখতে পারি?
হ্যাঁ। CLAUDE_CODE_SKIP_PROMPT_HISTORY transcript লেখা বন্ধ করে। --no-session-persistence একটি non-interactive claude -p run-এর ক্ষেত্রে transcript লেখা বন্ধ করে। আগে এর trade-off বুঝে নিন। কারণ resume যে transcript পড়ে, সেগুলো বন্ধ করলে --continue এবং --resume লোড করার মতো কিছুই পাবে না। আপনার উদ্বেগ যদি file থাকা নয়, বরং file কোথায় রাখা হচ্ছে তা নিয়ে হয়, তাহলে CLAUDE_CONFIG_DIR একটি encrypted volume-এ নির্দেশ করুন এবং cleanupPeriodDays-এর মান কমিয়ে দিন।