# Chín cái bẫy Claude Code không ai báo trước (Phần 2)

[DIY Smart Code](https://homus.dev/speakers/diy-smart-code) · [DIY Smart Code](https://homus.dev/orgs/diy-smart-code)

> Chín cái bẫy của Claude Code: giới hạn trên status line, lệnh ! tốn prompt, Explore chạy Opus, API credit gói Max, CLAUDE.md, hook exit 2, session 30 ngày.

Topics: Coding Agents, Dev Tools, Workflow

Canonical: https://homus.dev/talks/claude-code-traps-nobody-warns-you-about-part-2

## 1. Bốn cái bẫy để mở đầu

Video mở đầu bằng bốn câu ngắn, mỗi câu là một cái bẫy (theo video đăng ngày 26/10/2026, quay trên Claude Code 2.1.296). Thứ nhất, gõ một lệnh shell trong Claude Code có thể tốn bạn nguyên một prompt: bắt đầu dòng bằng dấu chấm than, và Claude sẽ trả lời output của lệnh đó với giá của một prompt. Thứ hai, chỉ một lỗi gõ trong đường dẫn của một safety hook là hook đó để mọi thứ đi qua. Thứ ba, Claude Code xoá các session của bạn sau 30 ngày. Thứ tư, gói Max có kèm tới 200 đô API credit mỗi tháng mà bạn phải tự mình nhận.

Đó là bốn trong chín cái bẫy mà phần 1 của loạt video "Claude Basics" chưa nói tới. Theo kênh (video đăng ngày 26/10/2026), các màn hình terminal trong video là bản ghi thật trên Claude Code 2.1.296 chạy trong VS Code, và các claim được đối chiếu với docs chính thức.

![Slide 9 traps nobody warns you about, cạnh terminal Claude Code 2.1.296 với dòng ! git status](https://homus.dev/photos/EiSMLCKCoCE-0003.jpg)

Slide mở đầu "9 traps. nobody warns you about" với cái bẫy số 1 "! replies cost a prompt" (video đăng ngày 26/10/2026). Bên phải là ô nhập của Claude Code 2.1.296 trong VS Code: dấu chấm than được khoanh đỏ trước `git status`, bên dưới là gợi ý "! for shell mode".

## 2. Status line: đưa giới hạn của bạn lên màn hình

Cái bẫy đầu tiên là một con số mà phần lớn mọi người chỉ nhìn thấy khi Claude dừng lại giữa chừng một task. Theo video đăng ngày 26/10/2026, status line là một script mà Claude Code chạy sau mỗi câu trả lời. Script này nhận dữ liệu session của bạn dưới dạng JSON và in ra một dòng ở cuối terminal. Docs nói nó không tốn token nào. Với người dùng gói Pro và Max, dữ liệu đó có hai con số từ 0 đến 100: bạn đã dùng bao nhiêu phần của cửa sổ 5 giờ, và bao nhiêu phần của tuần.

Thêm phần trăm context vào là bạn thấy cả ba con số cùng lúc. Bạn không cần tự viết script. Gõ `/statusline`, nói mình muốn gì, và Claude sẽ viết script rồi cập nhật settings cho bạn (theo video đăng ngày 26/10/2026). Trên màn hình, câu được gõ là:

```
/statusline show the model name, my 5-hour and 7-day limit percentages, and context used
```

Ngay sau đó Claude Code gọi `statusline-setup` (Configure status line), chạy như một agent nền (demo trong video đăng ngày 26/10/2026). Kết quả là dòng cuối terminal hiện tên model Opus 5.5, thanh 5-hour, thanh 7-day và phần trăm context.

![Terminal Claude Code với status line Opus 5.5, 5-hour 21%, 7-day 65%, context 3%, và trích docs về status line](https://homus.dev/photos/EiSMLCKCoCE-0043.jpg)

Status line trong bản ghi (video đăng ngày 26/10/2026): Opus 5.5, 5-hour 21%, 7-day 65%, context 3%. Khung trích docs bên dưới ghi status line chạy local, không tiêu API token, và tạm ẩn khi mở help menu hay permission prompt.

Lời khuyên của video (đăng ngày 26/10/2026) là giữ cả hai giới hạn trên màn hình, vì mỗi tin nhắn tính vào cả cửa sổ 5 giờ lẫn giới hạn tuần cùng một lúc. Một đợt dùng nặng có thể ăn hết giới hạn tuần trước cả khi cửa sổ 5 giờ kịp reset.

## 3. Con số thật đằng sau các thanh giới hạn

Người xem cứ hỏi đi hỏi lại về những con số thật nằm sau các thanh đó. Câu trả lời của video (đăng ngày 26/10/2026): Anthropic không công bố số tin nhắn. Gói Max cho 5 hoặc 20 lần mức của Pro trong mỗi session 5 giờ, chênh lệch theo tuần thì không được công bố, và dùng được bao xa còn tùy độ dài cuộc hội thoại, model, các tính năng bạn dùng và effort level.

Trên màn hình, đoạn trích từ trang của Anthropic ghi rằng vì vậy không có con số tin nhắn cố định; Free đủ cho câu hỏi hằng ngày, Pro cho ít nhất 5 lần mức dùng của Free trong mỗi session 5 giờ, Max cho 5 lần hoặc 20 lần mức của Pro, và ghế Standard của gói Team cho nhiều hơn Pro (theo video đăng ngày 26/10/2026).

Những gì được công bố và không được công bố về giới hạn, theo video đăng ngày 26/10/2026: chỉ có tỉ lệ giữa các gói trong session 5 giờ, không có số tin nhắn và không có tỉ lệ theo tuần.

## 4. Khi chạm giới hạn: giữ session mở, menu và thông báo

Khi vẫn chạm giới hạn, video khuyên giữ session mở (video đăng ngày 26/10/2026). Nếu giới hạn của subscription dừng Claude giữa task, Claude Code sẽ chờ, cho bạn xem giờ reset, và bảo Claude làm tiếp task từ đúng chỗ đã dừng ngay khi cửa sổ reset. Tính năng này bật sẵn khi bạn đăng nhập bằng một Claude subscription. Thoát ra là mất lượt chờ đó. Một permission prompt vẫn có thể chặn nó lại trong lúc bạn đi vắng.

Trên màn hình là đoạn docs tương ứng: khi một usage limit của claude.ai dừng Claude giữa task, Claude Code chờ trong session đang mở và tự làm tiếp sau khi giới hạn reset; automatic continue bật mặc định trong session tương tác đăng nhập bằng subscription claude.ai, và cần Claude Code v2.1.234 trở lên (theo video đăng ngày 26/10/2026).

Khi giờ reset còn cách hơn một ngày, tức là giới hạn tuần, bạn nhận một menu thay vì lượt chờ tự động, và lệnh `/rate-limit-options` mở menu đó bất cứ lúc nào (theo video đăng ngày 26/10/2026). Đoạn docs trên màn hình cho biết trong menu này bạn chọn dòng bắt đầu bằng "Wait here, then continue automatically" để bắt đầu chờ.

Hai nhánh khi chạm giới hạn, theo video đăng ngày 26/10/2026 (Claude Code 2.1.296): reset gần thì tự chờ và làm tiếp, reset hơn một ngày thì ra menu.

Tiếp theo, bạn muốn được báo khi việc xong. Theo video đăng ngày 26/10/2026, mặc định thông báo desktop chỉ chạy trong Ghostty, Kitty và iTerm2. Ở mọi terminal khác, hãy đặt kênh thông báo ưu tiên (preferred notification channel) thành terminal bell, hoặc thêm một notification hook; trang terminal-config của docs ghi setting đó là `preferredNotifChannel` với giá trị `"terminal_bell"` (đọc ngày 26/10/2026). Trên Windows, đó là một dòng PowerShell mở ra một hộp thoại, và nó cũng bật lên khi Claude đang chờ một permission. Trên màn hình là hook Windows lấy từ docs (trang hooks-guide, đọc ngày 26/10/2026):

```
"powershell.exe -Command \"[System.Reflection.Assembly]::LoadWithPartialName('System.Windows.Forms'); [System.Windows.Forms.MessageBox]::Show('Claude Code needs your attention', 'Claude Code')\""
```

## 5. Thứ tiêu giới hạn khi bạn không gõ gì, và dấu chấm than

Một phần giới hạn của bạn vẫn bị tiêu ngay cả khi bạn không gõ gì (theo video đăng ngày 26/10/2026). Loop và scheduled task chạy theo chu kỳ của chúng, và mỗi lần chạy lại gửi toàn bộ context của bạn đi một lần nữa. Tin nhắn từ các session khác của bạn đến như những lượt mới. Một goal có thể check-in tới ba lần giữa hai prompt của bạn, và các agent teammate vẫn dùng token cho tới khi chúng thoát.

Đoạn docs trên màn hình (video đăng ngày 26/10/2026) nói rõ thêm: scheduled task chạy theo chu kỳ kể cả khi session đang rảnh, gửi full context mỗi lần; muốn giữ tin nhắn từ session khác thay vì nhận ngay thì đặt `crossSessionInbound` thành `hold`; Claude Code bắt đầu tối đa ba lần check-in lúc rảnh cho mỗi goal giữa các prompt, trước v2.1.246 thì không giới hạn, và muốn tắt thì đặt `CLAUDE_CODE_GOAL_CHECKIN_MINUTES` thành `0`.

Lệnh `/usage` đánh dấu mọi thứ đứng sau từ 10% trở lên mức dùng gần đây của bạn, nên hãy nhìn ở đó trước (theo video đăng ngày 26/10/2026).

Rồi tới dấu chấm than. Theo video đăng ngày 26/10/2026, nó chạy một lệnh shell mà không hỏi và đưa output vào cuộc hội thoại, và giờ Claude tự động trả lời output đó. Câu trả lời ấy tốn đúng bằng một prompt bình thường. Nếu bạn chỉ muốn output nằm trong context, hãy đặt setting "respond to bash commands" thành false; trang interactive-mode của docs gọi setting này là `respondToBashCommands`, đặt trong `settings.json` (đọc ngày 26/10/2026).

![Terminal Claude Code: ! git status in ra trạng thái repo, nhãn ! RUNS IT, NO PROMPT, Claude đang Contemplating](https://homus.dev/photos/EiSMLCKCoCE-0303.jpg)

Bản ghi `! git status` (video đăng ngày 26/10/2026): output của git được khoanh lại với nhãn "! RUNS IT, NO PROMPT", và ngay bên dưới Claude đã bắt đầu "Contemplating" để trả lời output đó. Status line lúc này là 5-hour 24%, 7-day 66%.

## 6. Code search và subagent Explore

Cái bẫy lớn hơn là code search. Theo video đăng ngày 26/10/2026, khi Claude khám phá project của bạn, nó giao việc tìm kiếm cho một subagent có sẵn tên là Explore. Explore từng chạy trên Haiku. Từ tháng 7, nó chạy trên model chính của bạn, giới hạn trần ở Opus, nên với setup mặc định, các lượt tìm kiếm của bạn cũng chạy trên Opus.

Để đưa nó về như cũ, video hướng dẫn thêm một agent của riêng bạn tên là Explore trong thư mục `.claude/agents`, đặt model là Haiku và chỉ cho nó những tool cần để nhìn quanh. Bỏ dòng tools đi là nó nhận mọi tool. Trang sub-agents của docs (đọc ngày 26/10/2026) ghi đúng ý này: một subagent cấp user hoặc project tên Explore sẽ đè lên bản built-in và giữ field model của chính nó, nên có thể định nghĩa một bản với `model: haiku` để chạy khám phá trên model rẻ hơn.

![Terminal: use the Explore agent to find where this app saves the tasks, Explore Completed 7s, 6.6k tokens, 6 tools, Haiku 5.5](https://homus.dev/photos/EiSMLCKCoCE-0343.jpg)

Bản ghi trong video đăng ngày 26/10/2026: câu "use the Explore agent to find where this app saves the tasks. answer in one line", Explore chạy nền và báo "Completed · 7s · 6.6k tokens · 6 tools · Haiku 5.5". Nhãn đỏ nhắc lại: không có dòng tools nghĩa là mọi tool.

## 7. Effort, cache và Ultracode

Effort là núm vặn còn lại. Theo video đăng ngày 26/10/2026, có năm mức, từ low đến max. Trên các model 5.5, Claude Code bắt đầu ở medium, còn phần lớn model cũ hơn bắt đầu ở high. Mức thấp nhanh hơn và rẻ hơn, mức cao suy luận sâu hơn và tiêu nhiều hơn, còn max có thể nghĩ quá đà (overthink). Bạn đặt effort bằng `/effort` hoặc thanh trượt trong `/model`, và max chỉ giữ trong session hiện tại.

Bảng docs trên màn hình (video đăng ngày 26/10/2026) liệt kê từng mức: medium là mặc định trên Opus 5.5, Sonnet 5.5 và Haiku 5.5; high là mặc định trên mọi model khác trừ ba model đó và Opus 4.7; xhigh là mặc định trên Opus 4.7; max dành cho bài toán khó và có thể cho lợi ích giảm dần, dễ overthink, nên test trước khi dùng rộng.

Trên các model 5.5 và Fable, dù dùng subscription hay API key, đổi effort giữa session vẫn giữ được cache (theo video đăng ngày 26/10/2026). Ultracode, thứ mọi người cứ hỏi mãi, là một setting chứ không phải một effort level: nó khiến Claude lên kế hoạch một workflow cho mỗi task lớn, ở bất kỳ effort nào bạn đang chạy.

![Slide Keeps the cache với trích docs, và màn hình /effort với thanh low medium high xhigh max cùng ô Ultracode off](https://homus.dev/photos/EiSMLCKCoCE-0423.jpg)

Màn hình `/effort` trong video đăng ngày 26/10/2026: thanh trượt từ Faster tới Smarter qua low, medium, high, xhigh, max (đang ở medium), ô "Ultracode off · Tab to toggle", và dòng "s for this session only". Trích docs phía trên: trên Opus 5.5, Sonnet 5.5, Haiku 5.5 và Fable 5.1, đổi effort giữ được cache.

## 8. API credit trên gói Max, claude -p và Agent SDK

Trên gói Max có kèm API credit (theo video đăng ngày 26/10/2026): 100 đô mỗi tháng với Max 5x và 200 đô với Max 20x. Free và Pro không có. Bạn tự nhận nó trong Settings, Billing, API credits, bằng cách liên kết một Console organization, và credit không dùng sẽ hết hạn sau mỗi chu kỳ thanh toán.

Credit này dùng cho API và Agent SDK, nhưng không dùng cho Claude Code trong terminal, trong editor, trong desktop app hay trên web, nên nó không nới giới hạn coding của bạn (theo video đăng ngày 26/10/2026).

![Slide You claim it yourself: Settings, Billing, API credits, link 1 Console organization, bảng điều kiện API credit](https://homus.dev/photos/EiSMLCKCoCE-0443.jpg)

Bảng từ trang hỗ trợ của Anthropic chiếu trong video đăng ngày 26/10/2026: gói đủ điều kiện là Max 5x, Max 20x và Team; mức tháng 100 đô (Max 5x), 200 đô (Max 20x), tới 500 đô (Team, gộp chung); không bao gồm Claude Code; hết hạn cuối mỗi chu kỳ, không cộng dồn. Dòng dưới: người mới đăng ký nhận sau 7 ngày dùng gói.

Thế còn `claude -p` và Agent SDK chạy trên máy của bạn? Theo video đăng ngày 26/10/2026, khi đăng nhập bằng gói của bạn, cả hai vẫn rút từ giới hạn của gói. Thay đổi hồi tháng 6 lẽ ra sẽ chuyển chúng sang tính tiền riêng đã bị tạm dừng. Màn hình trích hai cập nhật trên trang hỗ trợ: ngày 15/06/2026, Anthropic tạm dừng các thay đổi đã công bố cho Agent SDK, "for now, nothing has changed"; ngày 07/10/2026, gói Max và Team có thêm API credit hằng tháng.

Một cái bẫy ở đây (video đăng ngày 26/10/2026): trong chế độ `-p`, một API key có trong environment luôn thắng, nên bạn sẽ trả theo giá API thay vì dùng gói.

## 9. "Claude Code miễn phí" qua router hay Ollama

Rồi tới những video hứa hẹn Claude Code miễn phí qua một router hay Ollama. Theo video đăng ngày 26/10/2026, cách đó trỏ Claude Code sang một endpoint khác, và Claude Code gửi traffic của nó tới đó trước, kể cả source code của bạn. Ví dụ của chính Ollama chạy những model như Gemma, nên thứ trả lời bạn không phải là Claude. Anthropic không kiểm định (audit) các gateway đó và không hỗ trợ việc định tuyến Claude Code sang model không phải Claude.

Một key của gateway thay thế đăng nhập subscription của bạn, nên giới hạn của gói thôi áp dụng và traffic bị tính tiền theo token cho bất kỳ ai sở hữu key đó (theo video đăng ngày 26/10/2026). Thứ bạn nhận được là Claude Code chạy model của người khác.

![Slide Free Claude Code?: Claude Code đi qua router / Ollama tới Gemma thay vì Claude, kèm trích docs LLM gateway](https://homus.dev/photos/EiSMLCKCoCE-0543.jpg)

Slide "Free Claude Code?" trong video đăng ngày 26/10/2026: Claude Code đi qua "router / Ollama" kèm "your traffic + your source code", và chữ Claude bị gạch đi, thay bằng Gemma. Nhãn "not audited · not supported". Trích docs LLM gateway: request mang credential đó thay cho đăng nhập claude.ai, giới hạn của subscription không áp dụng, và traffic tính theo token cho người sở hữu credential.

## 10. Các file CLAUDE.md cộng dồn, không đè nhau

Các file instruction của bạn không đè lên nhau. Kênh tự sửa sai (video đăng ngày 26/10/2026): một video cũ của kênh nói rằng CLAUDE.md của project thắng file cá nhân của bạn, giống như CSS. "I got that wrong", kênh nói. File của công ty, file cá nhân, file của project và file local của bạn đều được nạp cạnh nhau, và Claude nhìn thấy tất cả.

Chuỗi ghi đè mà bạn đang nghĩ tới nằm trong `settings.json`, nơi một setting ở tầng cao hơn thực sự thay thế cùng setting đó ở tầng dưới (theo video đăng ngày 26/10/2026). Khi hai file CLAUDE.md mâu thuẫn, ngay cả các trang của Anthropic cũng mô tả kết quả khác nhau, nên đừng trông vào một bên thắng. Trên màn hình là hai đoạn docs đặt cạnh nhau: một đoạn nói nếu hai instruction mâu thuẫn, Claude có thể chọn một cái tùy ý; đoạn kia nói khi instruction xung đột, Claude dùng phán đoán để dung hòa chúng.

Rule mâu thuẫn làm Claude tuân theo rule của bạn kém ổn định hơn, nên hãy xoá một bên của mỗi mâu thuẫn (theo video đăng ngày 26/10/2026). Lệnh `/doctor prompt-audit` tìm chúng cho bạn: instruction viết cho model cũ, file hoặc lệnh không tồn tại, và các file mâu thuẫn nhau. Nó không thay đổi gì cho tới khi bạn bảo.

![Slide /doctor prompt-audit với ba nhóm lỗi và output Prompt audit: demo/](https://homus.dev/photos/EiSMLCKCoCE-0723.jpg)

Output thật của `claude -p "/doctor prompt-audit ."` trên Claude Code 2.1.296 (video đăng ngày 26/10/2026): mục 1 báo hai file đưa ra rule thụt lề ngược nhau ("Indent with 2 spaces" và "Indent with tabs"), mục 2 báo `npm test` không có test script để chạy, và dòng cuối "Nothing has been applied."

## 11. AGENTS.md và công tắc tắt nằm trong CLAUDE.local.md

AGENTS.md là file mà các coding agent khác đọc. Theo video đăng ngày 26/10/2026, giờ Claude Code cũng nạp nó, nhưng chỉ khi không có CLAUDE.md nào trong thư mục của bạn hoặc ở các thư mục phía trên. Một file CLAUDE.local.md cũng được tính, nên chỉ cần thêm một file ghi chú cá nhân là có thể khiến Claude thôi dùng AGENTS.md của team cho bạn.

Lệnh `/context` liệt kê những file instruction thực sự đã được nạp (theo video đăng ngày 26/10/2026). Cách sửa cho team là một dòng được commit: một file CLAUDE.md có nội dung `@AGENTS.md`. Trên màn hình, bản ghi cho thấy Claude trả lời rằng project không có CLAUDE.md, có một AGENTS.md chưa được track nhưng Claude Code "doesn't load that file automatically", kèm đoạn docs nói rằng vì CLAUDE.local.md được tính, thêm một file như vậy vào project dựa trên AGENTS.md sẽ làm Claude thôi đọc AGENTS.md cho bạn.

Quy tắc nạp AGENTS.md theo video đăng ngày 26/10/2026: một file CLAUDE.local.md cá nhân cũng đủ để tắt AGENTS.md của team, và một dòng `@AGENTS.md` trong CLAUDE.md đã commit là cách sửa.

## 12. Hook chặn thật: exit 2 và onFailure

Instruction chỉ là lời khuyên. Theo video đăng ngày 26/10/2026, hook là một lệnh mà Claude Code chạy ở những điểm cố định, và một PreToolUse hook nhận lời gọi tool dưới dạng JSON và có thể chặn nó. Docs nói thẳng: một hook có đường dẫn sai sẽ để mọi thứ đi qua.

Exit code quyết định tất cả (theo video đăng ngày 26/10/2026). 0 nghĩa là không phản đối. 2 là chặn, và nội dung lỗi của bạn được gửi tới Claude làm lý do. Mọi code khác, kể cả 1, code thất bại thông thường, chỉ là một lỗi không chặn (non-blocking), và lệnh vẫn chạy. Một lỗi gõ trong đường dẫn script nghĩa là hook không khởi động được, và đó cũng là non-blocking. Một hook chạy quá timeout cũng không chặn, và timeout mặc định là 10 phút.

Bản ghi trên màn hình (video đăng ngày 26/10/2026) cho thấy đúng chuyện đó: với lệnh "run rm scratch.txt", PreToolUse hook báo "Failed with non-blocking status code: no-rm.js: rm is blocked in this project", nhưng file `scratch.txt` vẫn bị xoá.

Đặt `"onFailure": "block"`, và một hook không khởi động được, chạy quá giờ hay thoát với một code lạ sẽ chặn hành động thay vì để nó qua (theo video đăng ngày 26/10/2026; slide ghi áp dụng cho command hook và http hook, từ 2.1.295 trở lên). Một lệnh chặn vẫn giữ hiệu lực cả trong bypass mode. Lời khuyên của video: viết hook, rồi cố tình làm hỏng nó một lần và xem nó chặn lệnh.

![Slide onFailure block với can't start, times out, odd exit code, và terminal Claude giải thích hook đang chặn mọi lệnh Bash và PowerShell](https://homus.dev/photos/EiSMLCKCoCE-0843.jpg)

Bản ghi trong video đăng ngày 26/10/2026: Claude báo "I didn't delete scratch.txt", vì `.claude/settings.json` chạy `.claude/hook/no-rm.js` trong khi script thật nằm ở `.claude/hooks/no-rm.js` (thiếu chữ "s"). Node không tìm thấy file, và vì hook đặt `"onFailure": "block"` nên mọi lệnh shell đều bị chặn.

## 13. skill-creator, Learning output style và ultrathink

Phần 1 dựng một skill bằng tay. skill-creator là skill của chính Anthropic để viết và test skill. Trong Claude Code, bạn cài nó dưới dạng plugin từ marketplace chính thức (theo video đăng ngày 26/10/2026). Trên màn hình, lệnh được gõ và kết quả "Installed skill-creator. Plugin is now active." là:

```
/plugin install skill-creator@claude-plugins-official
```

Theo video đăng ngày 26/10/2026, skill-creator chạy mỗi test prompt hai lần, một lần có skill của bạn và một lần không, chấm điểm cả hai, và benchmark pass rate, thời gian và token. Nhờ vậy bạn thấy skill của mình có hơn Claude không có nó hay không, và nó tốn bao nhiêu.

Nếu bạn đang học code, video gợi ý thử Learning output style (video đăng ngày 26/10/2026). Claude làm phần việc thường lệ, để lại một marker `TODO(human)` ở chỗ có một quyết định thiết kế thật sự, nói cho bạn biết cần viết gì và cần cân nhắc gì, rồi dừng lại cho tới khi bạn viết xong. Bật nó bằng `/output-style learning`, và lựa chọn này chỉ lưu cho project hiện tại. Docs nói nó tốn nhiều output token hơn, và một style là một instruction, không phải một sự bảo đảm.

![Slide Try the Learning output style với terminal hiện phần Guidance về sắp xếp todo và bảng mô tả style Learning](https://homus.dev/photos/EiSMLCKCoCE-0923.jpg)

Learning style trong bản ghi (video đăng ngày 26/10/2026): phần "Guidance" của Claude giải thích các lựa chọn sắp xếp to-do (theo `done`, theo `text` với `localeCompare`, hay kết hợp cả hai) để người học tự viết. Bảng docs bên dưới: Claude giải thích lựa chọn của mình và để lại những đoạn code nhỏ cho bạn tự viết.

Còn những "mã prompt bí mật" đang được truyền tay thì không có trong hướng dẫn của chính Anthropic (theo video đăng ngày 26/10/2026). Hướng dẫn đó nói: hãy rõ ràng và trực tiếp, và đối xử với Claude như một nhân viên mới xuất sắc nhưng chưa có chút context nào. Từ khoá "thần kỳ" duy nhất Claude Code vẫn nhận ra là `ultrathink`: nó yêu cầu suy luận sâu hơn ở lượt đó mà không đổi effort setting của bạn. Đoạn docs trên màn hình thêm rằng effort level gửi tới API không đổi, và những cụm như "think", "think hard", "think more" được chuyển đi như text prompt bình thường, không được nhận là từ khoá.

## 14. Thứ được giữ lại: training, feedback và incognito

Cuối cùng là chuyện thứ gì được giữ lại. Theo video đăng ngày 26/10/2026, trên Claude.ai, setting tên "Help improve our AI models" quyết định chat và coding session của bạn có thể được dùng để train các model tương lai hay không, và training là opt-out. Để bật thì dữ liệu có thể được giữ ở dạng đã khử định danh (de-identified) tới 5 năm. Tắt đi thì là 30 ngày.

Một lượt thumbs up hoặc thumbs down sẽ gửi cả cuộc hội thoại đó đi trong mọi trường hợp, kể cả khi setting đang tắt (theo video đăng ngày 26/10/2026). Chat incognito bỏ qua lịch sử và memory của bạn, và không bao giờ được dùng để train.

![Hai thẻ Leave it on 5 years de-identified và Turn it off 30 days, cùng trích trang privacy](https://homus.dev/photos/EiSMLCKCoCE-1023.jpg)

Hai lựa chọn trong video đăng ngày 26/10/2026: "Leave it on" (có thể train model tương lai, 5 năm, de-identified) và "Turn it off" (không dùng để train, 30 ngày). Trích trang privacy: người cho phép dùng dữ liệu có thời hạn lưu 5 năm, người không cho phép là 30 ngày, và có thể đổi bất cứ lúc nào trong phần data privacy controls của claude.ai.

Kênh có một chỗ sửa lại phần 1, về chuyện chia sẻ (video đăng ngày 26/10/2026). Phần 1 nói ai mở một artifact được chia sẻ cũng cần có tài khoản Claude. Không phải lúc nào cũng vậy: một chat artifact đã publish mở được cho bất kỳ ai có link.

## 15. Session 30 ngày, /insights, quay màn hình và safe mode

Theo video đăng ngày 26/10/2026, Claude Code giữ session của bạn dưới dạng text thuần trên máy trong 30 ngày theo mặc định. Sau đó một lượt quét xoá các file lịch sử hội thoại cũ và các file snapshot mà Rewind dùng. Đó là lý do resume và rewind chỉ với tới khoảng một tháng trước. Muốn giữ một năm, hãy đặt cleanup period days thành 365; trên màn hình đó là key `cleanupPeriodDays` trong `.claude/settings.json`:

```
{
"cleanupPeriodDays": 365
}
```

![Slide plain text on your machine 30 days, editor settings.json đang gõ cleanupPeriodDays với nhãn 365 = A YEAR](https://homus.dev/photos/EiSMLCKCoCE-1103.jpg)

Bản ghi trong video đăng ngày 26/10/2026: file `.claude/settings.json` mở trong VS Code, đang gõ `"cleanupPeriodDays"` với nhãn "365 = A YEAR". Trích docs bên dưới: mặc định là 30 ngày, tối thiểu là 1, đặt 0 sẽ báo lỗi validation.

Lệnh `/insights` đi qua các session đó và viết một báo cáo về những chỗ mọi thứ hay hỏng, và token của nó tính vào gói của bạn (theo video đăng ngày 26/10/2026).

Nếu bạn quay màn hình làm video, hãy đặt `IS_DEMO` trước khi khởi động Claude, biến này ẩn email và organization của bạn, cộng thêm biến `CLAUDE_CODE_HIDE_CWD` để đường dẫn thư mục không hiện trên màn hình khởi động (theo video đăng ngày 26/10/2026). Mọi bản ghi trong video này đều chạy với cả hai biến. Trên màn hình, màn hình khởi động chỉ còn "Claude Code v2.1.296 · Haiku 5.5 · Claude Max", với nhãn "START SCREEN: NO EMAIL · ORG · PATH".

Nếu sau tất cả chỗ setup này Claude bắt đầu hành xử lạ, safe mode khởi động một session với mọi tùy biến của bạn bị tắt, để bạn biết vấn đề nằm ở setup của mình hay ở Claude (theo video đăng ngày 26/10/2026). Trang cli-reference của docs ghi đây là cờ `--safe-mode` (đọc ngày 26/10/2026).

Video (đăng ngày 26/10/2026) chốt lại bằng ba việc cho setup sau ngày đầu tiên: đưa cả hai giới hạn lên status line, cho Explore một model nhỏ hơn, và viết một hook chặn bằng exit 2, rồi cố tình làm hỏng nó một lần.

Ba việc video chốt ở cuối (video đăng ngày 26/10/2026), đánh số theo chương tương ứng: status line, Explore và hook.

## Nguồn và liên kết

- Tên gốc: Claude Code Traps Nobody Warns You About (Part 2)
- Sự kiện: [YouTube](https://homus.dev/events/youtube)
- Video gốc: [https://www.youtube.com/watch?v=EiSMLCKCoCE](https://www.youtube.com/watch?v=EiSMLCKCoCE)

- Kênh YouTube DIY Smart Code (DIY Smart Code): [youtube.com/channel/UC_a85mUHqsy5j0CYCgLnkEQ](https://www.youtube.com/channel/UC_a85mUHqsy5j0CYCgLnkEQ)

- Docs Claude Code, status line (ghi status line chạy local và không tiêu API token, đọc ngày 26/10/2026): [code.claude.com/docs/en/statusline](https://code.claude.com/docs/en/statusline)

- Docs Claude Code, interactive mode (chờ usage limit reset, `/rate-limit-options`, lệnh `!` và `respondToBashCommands`, đọc ngày 26/10/2026): [code.claude.com/docs/en/interactive-mode](https://code.claude.com/docs/en/interactive-mode)

- Docs Claude Code, terminal configuration (thông báo desktop, `preferredNotifChannel`, đọc ngày 26/10/2026): [code.claude.com/docs/en/terminal-config](https://code.claude.com/docs/en/terminal-config)

- Docs Claude Code, hooks guide (notification hook PowerShell cho Windows, đọc ngày 26/10/2026): [code.claude.com/docs/en/hooks-guide](https://code.claude.com/docs/en/hooks-guide)

- Docs Claude Code, costs (mức dùng lúc rảnh và gợi ý trong `/usage`, đọc ngày 26/10/2026): [code.claude.com/docs/en/costs](https://code.claude.com/docs/en/costs)

- Docs Claude Code, model config (effort level, `ultrathink`, đọc ngày 26/10/2026): [code.claude.com/docs/en/model-config](https://code.claude.com/docs/en/model-config)

- Docs Claude Code, subagents (Explore và cách đè bằng `model: haiku`, đọc ngày 26/10/2026): [code.claude.com/docs/en/sub-agents](https://code.claude.com/docs/en/sub-agents)

- Trang hỗ trợ Anthropic về API credit hằng tháng cho gói Max và Team (đọc ngày 26/10/2026): [support.claude.com/en/articles/17154008](https://support.claude.com/en/articles/17154008-monthly-api-credits-for-max-and-team-plans)

- Docs Claude Code, LLM gateway (đọc ngày 26/10/2026): [code.claude.com/docs/en/llm-gateway](https://code.claude.com/docs/en/llm-gateway)

- Docs của Ollama về Claude Code (tài liệu bên thứ ba, ví dụ dùng model Gemma, đọc ngày 26/10/2026): [docs.ollama.com/integrations/claude-code](https://docs.ollama.com/integrations/claude-code)

- Docs Claude Code, memory (CLAUDE.md, AGENTS.md, import `@AGENTS.md`, đọc ngày 26/10/2026): [code.claude.com/docs/en/memory](https://code.claude.com/docs/en/memory)

- Docs Claude Code, hooks (exit code, `"onFailure": "block"`, đọc ngày 26/10/2026): [code.claude.com/docs/en/hooks](https://code.claude.com/docs/en/hooks)

- Docs Claude Code, output styles (Learning style và `TODO(human)`, đọc ngày 26/10/2026): [code.claude.com/docs/en/output-styles](https://code.claude.com/docs/en/output-styles)

- Trang privacy của Anthropic về việc dữ liệu có được dùng để train model hay không (đọc ngày 26/10/2026): [privacy.claude.com/en/articles/10023580](https://privacy.claude.com/en/articles/10023580-is-my-data-used-for-model-training)

- Docs Claude Code, environment variables (`IS_DEMO`, `CLAUDE_CODE_HIDE_CWD`, đọc ngày 26/10/2026): [code.claude.com/docs/en/env-vars](https://code.claude.com/docs/en/env-vars)

- Docs Claude Code, CLI reference (cờ `--safe-mode`, đọc ngày 26/10/2026): [code.claude.com/docs/en/cli-reference](https://code.claude.com/docs/en/cli-reference)

Nguồn: https://homus.dev/talks/claude-code-traps-nobody-warns-you-about-part-2 · cập nhật 2026-10-26
