SSD Nodes Learn Hosting plans →
নির্দেশিকা Matt Connorদ্বারা Matt Connor · আপডেট করা হয়েছে 2026-09-12

Claude Code session পুনরায় চালু ও history কোথায় থাকে

Claude Code-এ নাম বা picker দিয়ে session পুনরায় চালু করুন, terminal বন্ধ বা SSH বিচ্ছিন্ন হলেও সংরক্ষিত plaintext transcript কোন machine ও directory-তে থাকে জানুন।

কীভাবে Claude Code session পুনরায় চালু করবেন

সাম্প্রতিক conversation পুনরায় চালু করতে, বর্তমান directory-তে claude --continue চালান। পুরোনো কোনো conversation বেছে নিতে claude --resume চালান। ইতিমধ্যে চালু থাকা session-এর ভিতর থেকে /resume command ব্যবহার করলে প্রস্থান না করেই অন্য conversation-এ চলে যেতে পারবেন। সংক্ষিপ্ত রূপ হলো -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 এবং ওই page-কে authoritative reference হিসেবে ব্যবহার করুন।

একটি 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 ব্যবহার করে থাকলে session যে subagent দিয়ে শুরু হয়েছিল, সেটিও ফিরে আসে। Permission mode-ও ফিরে আসে। তবে নিরাপত্তার কারণে কিছু ব্যতিক্রম আছে। Plan mode এবং bypass-permissions mode কখনো restore করা হয় না। তাই কোনো session এই mode-এর একটিতে থাকলে resume করার সময় সেটি নতুন session যে mode-এ শুরু হতো, সেই mode-এ চলে।

কিছু বিষয় ফিরে আসে না, কারণ সেগুলো সংরক্ষিত অবস্থার অংশ নয়; এগুলো চালুর সময় দেওয়া flag। --add-dir দিয়ে যোগ করা directory এবং --mcp-config, --settings ও --plugin-dir-এর মতো option resume করার সময় আবার দিতে হয়। settings.json-এর মতো settings file চালুর সময় আবার পড়া হয়, তাই সেগুলোর মধ্যে থাকা কোনো বিষয় পুনরায় দিতে হয় না। Credentials-ও একই শ্রেণির: Claude Code conversation-এর সঙ্গে authentication পুনরুদ্ধার করে না; বরং চালুর সময় আপনার login এবং environment থেকে authentication পদ্ধতি নির্ধারণ করে। তাই shell-এ ভুলবশত ANTHROPIC_API_KEY ঢুকে থাকা কোনো VPS-এ resume করা session invalid API key error দেখাবে, যদিও আগেরবার এটি ঠিকমতো চলেছিল।

একটি VPS-এ session history কেন বেশি গুরুত্বপূর্ণ

এখানে এমন একটি তথ্য আছে যা অনেককেই অবাক করে। transcript যে মেশিনে agent চালানো হয়, সেখানেই লেখা হয়। এটি আপনার account-এ রাখা হয় না এবং cloud-এ sync হয় না। এটি ওই মেশিনের disk-এর একটি file।

তাই VPS-এর একটি tmux window-তে রেখে যাওয়া session আপনার laptop-এর picker-এ দেখা যায় না, এবং laptop-এর session VPS-এ দেখা যায় না। কোনো data একটির মধ্যে থেকে অন্যটিতে যায় না। আপনি যদি অধিকাংশ ব্যবহারকারীর মতো 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 সংরক্ষণ করে। Cowork আরও আলাদা পরিবেশে চলে; এটি আপনার মালিকানাধীন hardware-এ নয়, Anthropic sandbox-এর ভিতরে চলে। তাই আপনি যদি Cowork এবং Claude Code-এর মধ্যে কোনটি বেছে নেবেন তা বিবেচনা করেন, transcript শেষ পর্যন্ত কোথায় থাকে, সেটিও সিদ্ধান্তের একটি অংশ।

একটি মেশিনের মধ্যে search-এর পরিধি আপনার ধারণার চেয়ে বড়। claude --resume <session-id> প্রথমে বর্তমান project directory এবং তার git worktree-গুলোতে search করে, তারপর ওই মেশিনের অন্য সব project-এ search করে। মনে রাখার বিষয় হলো: “ওই মেশিনে”। অন্য host-এর কোনো session ID resolve হয় না, এবং Claude Code আপনাকে No conversation found with session ID: <session-id> দিয়ে তা জানায়।

Claude Code সেশন ইতিহাস কোথায় সংরক্ষণ করে

ডিফল্টভাবে, transcript-গুলো Claude Code-এর config directory-এর অধীনে ~/.claude/projects/<project>/<session-id>.jsonl ধরনের একটি path-এ থাকে।

<project> হলো আপনার working directory path, যেখানে প্রতিটি non-alphanumeric character hyphen দিয়ে প্রতিস্থাপিত হয়। তাই /home/deploy/apps/api-এ শুরু করা একটি session -home-deploy-apps-api নামের directory-এর অধীনে সংরক্ষিত হয়। রূপান্তরিত নামটি 200 character অতিক্রম করলে Claude Code সেটিকে সংক্ষিপ্ত করে এবং সম্পূর্ণ path-এর একটি hash যুক্ত করে। ফলে directory-এর নাম filesystem-এর সীমার মধ্যে থাকে।

ফাইলটি JSONL format-এ থাকে। প্রতি লাইনে একটি JSON object থাকে, যা একটি message, tool use অথবা metadata entry হতে পারে। এটি পাঠযোগ্য text, তাই এটি পড়া নিরাপদ।

এর ওপর ভিত্তি করে parser লেখা নিরাপদ নয়। Entry format Claude Code-এর internal format এবং version পরিবর্তনের সঙ্গে এটি বদলে যায়। তাই update হলেই এই ফাইল সরাসরি পড়া script কাজ করা বন্ধ করতে পারে। Anthropic-এর নিজস্ব documentation-এ এর পরিবর্তে /export অথবা documented script interface ব্যবহার করতে বলা হয়েছে। এই কারণেই পরামর্শটি যথাযথ।

দুটি setting এই অবস্থান ও সংরক্ষণকাল পরিবর্তন করতে পারে। CLAUDE_CONFIG_DIR পুরো config directory অন্যত্র সরিয়ে দেয়। এর মাধ্যমে transcript আলাদা volume বা encrypted volume-এ রাখা যায়। cleanupPeriodDays-এর settings.json-এ সংরক্ষণকাল নিয়ন্ত্রণ করা হয়। ডিফল্ট সংরক্ষণকাল 30 দিন এবং সর্বনিম্ন মান 1।

এই transcript ফাইলগুলোর ভিতরে আসলে কী থাকে

প্রতিটি tool result রেকর্ড করা হয়। তাই একটি 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 দেখালে সেটিও সেখানে থাকে। কিছু leak হয়নি। Transcript-এ যা ঘটেছে তা রেকর্ড করা হয়েছে। এটাই transcript-এর উদ্দেশ্য, এবং ঠিক এই কারণেই এটিকে আপনার threat model-এর অংশ করতে হবে।

  • Backups: /home বা /root-এর সাধারণ backup নিলে আপনার transcript-গুলোও backup-এর গন্তব্যে কপি হয়। একটি exclusion যোগ করুন। অথবা মেনে নিন যে আপনার prompt এবং ফাইলের বিষয়বস্তুর কপি এখন backup store-এ রয়েছে।
  • Snapshots and images: যেকোনো কারণে নেওয়া VPS snapshot-এ পুরো directory থাকে। দ্বিতীয় server তৈরির জন্য clone করা image-এও একই directory থাকে।
  • Other accounts on the box: অনুমান না করে ls -ld ~/.claude ~/.claude/projects দিয়ে নিজেই permission mode পরীক্ষা করুন।
  • Deliberate uploads: /feedback command ইচ্ছাকৃতভাবে 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-ও থাকবে না।

পুরোনো conversation কীভাবে খুঁজে পাবেন

claude --resume দিয়ে picker খুলুন। চলমান session-এর ভেতর থেকে /resume দিয়েও এটি খুলতে পারেন। প্রতিটি row-তে session name সেট করা থাকলে তা দেখায়। না থাকলে 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 resume করার সিদ্ধান্ত নেওয়ার আগে তার content preview করতে Space চাপুন। নির্বাচিত session-এর নাম বদলাতে Ctrl+R চাপুন।

Session-এর নাম দিলে এই কাজগুলো অনেক সহজ হয়। claude -n auth-refactor দিয়ে একটি session শুরু করুন। অথবা conversation-টি বাস্তব কাজের রূপ নিয়েছে বুঝতে পারার পর, কাজের মাঝপথে /rename auth-refactor চালান। এরপর shell থেকেই নাম ব্যবহার করে named session resume করা যায়।

Unnamed session-এর ক্ষেত্রেও generated title তৈরি হয়। একটি background request ছোট ও দ্রুত model ব্যবহার করে আপনার প্রথম prompt-এর সারাংশ তৈরি করে এই title লেখে। Picker-এ row শনাক্ত করতে title-টি সহায়ক। তবে এটি resume handle নয়। claude --resume <name> শুধু আপনার নিজের সেট করা নামের সঙ্গে মিলে।

সঠিক session খুঁজতে transcript-এ grep করা

কখনও কখনও আপনার একটি phrase মনে থাকে, কিন্তু আর কিছু মনে থাকে না। Transcript-গুলো text হওয়ায় সেগুলো search করুন।

grep -rl "nftables" ~/.claude/projects/

এতে মিলে যাওয়া transcript-এর path দেখা যায়। .jsonl extension বাদ দেওয়া filename-টি session ID, এবং claude --resume <session-id> এটি গ্রহণ করে। কোন session চান তা নির্ধারণ করতে grep ব্যবহার করুন। এরপর সেটি resume করুন অথবা প্রকৃতপক্ষে পড়ার জন্য export করুন।

এখানে দুটি গুরুত্বপূর্ণ সীমাবদ্ধতা আছে। Content JSON-escaped হওয়ায় quote character-যুক্ত কোনো phrase, অথবা line break-এর কারণে বিভক্ত phrase, literal string হিসেবে match নাও করতে পারে। আর কোনো 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 চালিয়ে গেলে প্রথম 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 resume করে এবং পরবর্তী resume-গুলোতে dialog দেখানো বন্ধ করে।

সিদ্ধান্তটি দেখতে যতটা কঠিন, বাস্তবে ততটা নয়। আপনি পরের যে কথাটি লিখতে যাচ্ছেন তা আগের কথোপকথনের ওপর নির্ভর করলে resume করুন। নির্ভর না করলে নতুন করে শুরু করুন। drift-এর লক্ষণ খেয়াল করলে সহজেই বোঝা যায়: Claude এমন একটি file-এর কথা বলছে যা আপনি এক ঘণ্টা আগে delete করেছেন, অথবা session-এর শুরুতেই চূড়ান্ত করা কোনো সিদ্ধান্ত নিয়ে আবার বিতর্ক করছে। এটি stale context। সেটি পরবর্তী ধাপে বহন করলে একই সঙ্গে tokens এবং accuracy—দুটিই ক্ষতিগ্রস্ত হয়।

পুরোনো conversation-এর কার্যকর অংশ যদি এমন কোনো decision বা fact হয় যা পরে আবার প্রয়োজন হবে, তা বহন করার জন্য resume-এর ওপর নির্ভর করবেন না। এমন জায়গায় লিখে রাখুন যা প্রতিটি session দেখতে পারে। Claude Code-এর memory files এই কাজের জন্যই ব্যবহৃত হয়।

এখানে /branch সম্পর্কেও জানা দরকার। এটি বর্তমান point পর্যন্ত conversation copy করে এবং আপনাকে সেই copy-তে নিয়ে যায়। মূল conversation অপরিবর্তিত থাকে এবং picker-এ দেখা যায়। প্রথম পদ্ধতিটি না হারিয়ে দ্বিতীয় পদ্ধতি পরীক্ষা করতে এটি ব্যবহার করুন।

Resume, compaction এবং memory-এর মধ্যে পার্থক্য

এগুলোকে প্রায়ই এক মনে করা হয়, কিন্তু এগুলো ভিন্ন সমস্যা সমাধান করে।

Resume বলতে বোঝায় আপনি বের হয়ে যাওয়ার, reboot করার বা অন্য কাজে চলে যাওয়ার পর একটি conversation আবার চালু করা। Compaction একটি live conversation-এর context window নিয়ে কাজ করে: /compact Claude যে context ধরে রাখছে, তার জায়গায় একটি summary বসায়, ফলে পরের request-গুলোতে কম token পাঠানো হয়। আপনার সমস্যা যদি context window পূর্ণ হয়ে যাওয়া হয়, তাহলে compaction ব্যবহার করুন। Claude Code context window পরিচালনা করা অংশে এটি যথাযথভাবে ব্যাখ্যা করা হয়েছে।

Memory আবার আলাদা বিষয়। CLAUDE.md file এবং auto memory প্রতিটি session শুরুর সময় instruction ও fact load করে। তাই এগুলো এমন কোনো conversation নয়, যেটিতে আপনি ফিরে যান। এগুলোতে আপনি তথ্য লিখে রাখেন, যাতে পরে কোনো conversation-এ ফিরে যাওয়ার প্রয়োজন না হয়।

আপনি যদি একই সময়ে দুটি conversation চালিয়ে সেগুলোর মধ্যে সমন্বয় করতে চান, সেটি আলাদা একটি mechanism। উভয় session live থাকা অবস্থায় Claude Code session একে অন্যকে message পাঠাতে পারে। এটি গতকালের session disk থেকে আবার চালু করার সমস্যা থেকে ভিন্ন।

FAQ

Claude Code আমার session history কোথায় সংরক্ষণ করে?

ডিফল্টভাবে আপনার config directory-এর ~/.claude/projects/<project>/<session-id>.jsonl-এ সংরক্ষণ করে। এখানে <project> হলো working directory path, যেখানে alphanumeric নয় এমন অক্ষর hyphen দিয়ে প্রতিস্থাপিত হয়। প্রতিটি file JSONL format-এ থাকে: প্রতি লাইনে একটি করে JSON object থাকে, যা message, tool use বা metadata entry নির্দেশ করে। CLAUDE_CONFIG_DIR config directory অন্য কোথাও সরিয়ে দেয়। settings.json-এর cleanupPeriodDays transcript কতদিন সংরক্ষিত থাকবে তা নির্ধারণ করে। ডিফল্ট সময়সীমা 30 দিন এবং সর্বনিম্ন 1 দিন।

আমার laptop-এর picker-এ VPS session দেখতে পাচ্ছি না কেন?

কারণ transcript সেই machine-এর disk-এ লেখা হয় যেখানে agent চলেছে, এবং machine-গুলোর মধ্যে এগুলো sync হয় না। VPS-এ tmux-এর ভিতরে করা conversation শুধু VPS-এই থাকে। SSH-এর মাধ্যমে সেখানেই সেটি resume করুন। অথবা স্থানীয় record রাখতে তার ভিতরে /export চালিয়ে text file-টি copy করে নিন।

অন্য directory-তে শুরু করা session কি resume করতে পারি?

হ্যাঁ, যদি আপনার কাছে সেই session ID থাকে। claude --resume <session-id> প্রথমে বর্তমান project directory এবং তার git worktree-গুলোতে খোঁজে। এরপর একই machine-এর অন্য সব project-এ খোঁজে। picker-এর ভিতরে Ctrl+A ব্যবহার করলে machine-এর সব project-এ তালিকা বিস্তৃত হয়। Ctrl+W ব্যবহার করলে বর্তমান repository-এর সব worktree-এ তালিকা বিস্তৃত হয়। কোনো match না পেলে 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 বহন করছে। এই context প্রতিটি turn-এ token ব্যবহার এবং accuracy—দুটিই খারাপ করে।

Claude Code-কে disk-এ transcript লেখা থেকে বিরত রাখতে পারি?

হ্যাঁ। CLAUDE_CODE_SKIP_PROMPT_HISTORY transcript লেখা বন্ধ করে। একটি non-interactive claude -p run-এর জন্য --no-session-persistence transcript লেখা বন্ধ করে। আগে এর trade-off বুঝে নিন। কারণ resume transcript পড়ে কাজ করে, তাই transcript লেখা বন্ধ করলে --continue এবং --resume load করার মতো কিছু পায় না। আপনার উদ্বেগ যদি file থাকা নয়, বরং file কোথায় রাখা হচ্ছে তা নিয়ে হয়, তাহলে CLAUDE_CONFIG_DIR-কে একটি encrypted volume-এ point করুন এবং cleanupPeriodDays-এর সময়সীমা কমিয়ে দিন।