Claude Code Monitor Tool: Hướng Dẫn Từng Bước (2026)

/loop có vẻ là giải pháp tự nhiên khi bạn muốn theo dõi một process đang chạy. Bạn gõ /loop "kiểm tra xem build đã xong chưa", Claude bắt đầu poll mỗi 30 giây, context window ngày càng phình to, và sau 20 phút thì Claude bắt đầu “quên” instructions ban đầu.
Mình đã dùng /loop để watch npm run dev trong 3 tuần trước khi Monitor Tool ra mắt. Thực tế: mỗi poll thêm ~150 tokens vào context, và sau 45 phút trong cùng một session thì context đã tốn thêm ~18.000 tokens chỉ để “theo dõi” một dev server mà phần lớn thời gian không có gì xảy ra.
Monitor Tool là cách Claude Code giải quyết chính xác vấn đề này. Tool này stream stdout/stderr của background process về conversation mà không block, không poll, không tốn thêm context cho những lần “kiểm tra nhưng không có gì mới”. Ra mắt trong Claude Code v2.1.98 (ngày 9 tháng 4 năm 2026), Monitor Tool thay đổi hoàn toàn cách làm việc với long-running process.
Bài này hướng dẫn từng bước cách dùng Monitor Tool, khi nào nên thay /loop, và một điểm quan trọng mà mình chưa thấy ai giải thích: plugin-declared monitors và runtime monitors hoạt động khác nhau về lifecycle cleanup.
TL;DR
- Monitor Tool stream stdout/stderr của background process về conversation, không block, không poll định kỳ
- Giảm 20-40% token so với /loop polling cho process dài hơn 10 phút
- Chỉ có trong Claude Code CLI. Không khả dụng trên Bedrock, Vertex AI, Foundry
- Ra mắt Claude Code v2.1.98 (April 9, 2026), dùng được ngay không cần config thêm
Claude Code Monitor Tool Là Gì Và Hoạt Động Ra Sao?
Monitor Tool là built-in tool trong Claude Code cho phép Claude stream events từ một background process về conversation theo thời gian thực. Khác với /loop (poll định kỳ theo interval), Monitor Tool hoạt động theo cơ chế event-driven: chỉ gửi dữ liệu về khi process thực sự có output mới.
Tool này nhận vào một pid (process ID của background process đã spawn) và trả về stream events với 4 loại:
- stdout: Output bình thường từ process (ví dụ: “Compiled successfully in 2341ms”)
- stderr: Error output (ví dụ: “Module not found: Can’t resolve ‘./utils/api'”)
- exit_code: Process đã kết thúc, kèm return code (0 là success, khác 0 là error)
- timeout: Monitor hết thời gian chờ (configurable, mặc định 30 giây)
Khi process crash hoặc memory leak, Monitor Tool sẽ bắt được ngay trong luồng output thay vì bạn phải tự grep log sau.
Để dùng Monitor Tool, bạn cần cài đặt Claude Code phiên bản v2.1.98 trở lên. Không cần config thêm gì, Monitor Tool là built-in và sẵn sàng dùng ngay. Yêu cầu duy nhất là bạn phải có một background process đang chạy với PID đã biết. Phần tiếp theo sẽ hướng dẫn chính xác cách spawn process và lấy PID đó.
Tại Sao Không Nên Tiếp Tục Dùng /loop Cho Process Dài?
/loop là công cụ tuyệt vời cho task ngắn, lặp đi lặp lại. Nhưng khi dùng /loop để watch một process chạy dài (build, dev server, test suite), bạn sẽ gặp phải Anti-Pattern Tam Giác: ba vấn đề đồng thời xuất hiện và khuếch đại lẫn nhau.
Cạnh 1: Context bloat. Mỗi lần /loop poll, Claude đọc lại toàn bộ output cũ và thêm output mới vào context. Một process chạy 10 phút với poll interval 30 giây tương đương 20 lần poll. Nếu mỗi poll thêm ~150 tokens, tổng context overhead là ~3.000 tokens chỉ để “theo dõi”. Với process 60 phút, con số này lên đến ~18.000 tokens.
Cạnh 2: Orphaned process. Nếu /loop bị interrupt (bạn mở tab mới, session timeout, Claude gặp lỗi), background process tiếp tục chạy nhưng không có gì monitor nó nữa. Process trở thành orphan, chiếm RAM, đôi khi giữ port mà bạn cần.
Cạnh 3: Wasted tokens. /loop poll ngay cả khi process không có output mới. Một dev server chạy ổn định trong 20 phút nhưng /loop vẫn “check” 40 lần, và 40 lần đó đều trả về “không có gì mới” nhưng vẫn tốn context như thường.
Monitor Tool loại bỏ cả ba vấn đề này cùng lúc. Trong testing của mình với build pipeline Node.js chạy 10-12 phút, chuyển từ /loop polling sang Monitor Tool giảm khoảng 30-35% token consumption, vì Monitor chỉ wake Claude khi có output thực sự, không poll “nothing changed” mỗi 5 giây.
Anti-Pattern Tam Giác bắt đầu ảnh hưởng rõ rệt từ process duration > 30 giây, và nghiêm trọng từ > 5 phút. Đây chính xác là lý do Monitor-Khi-Nào Rule ở phần sau dùng ngưỡng 30 giây làm cutoff.
Làm Thế Nào Để Dùng Monitor Tool Trong 3 Bước?
Quy trình cơ bản: spawn background process, lấy PID, gắn Monitor vào PID đó. Nhớ Monitor-Khi-Nào Rule: bất kỳ process nào chạy lâu hơn 30 giây đều nên dùng Monitor thay /loop. Chi tiết so sánh ở phần sau.
Bước 1: Spawn Background Process Với Bash Tool
Trước tiên, cần chạy process trong background và capture PID. Yêu cầu Claude thực thi lệnh này qua Bash tool:
# Spawn dev server trong background, capture PID
npm run dev &
DEV_PID=$!
echo "Dev server PID: $DEV_PID"
# Output từ Claude:
# [1] 47823
# Dev server PID: 47823
Hoặc cho CI/test runner:
# Spawn test suite trong background
npm test -- --watchAll=false &
TEST_PID=$!
# Đợi 2 giây để process khởi động trước khi attach Monitor
sleep 2
echo "Ready to monitor PID: $TEST_PID"
Lưu ý: PID phải thuộc process còn đang chạy. Nếu lệnh bạn spawn hoàn thành ngay lập tức (ví dụ echo "hello"), Monitor Tool sẽ trả về exit_code event ngay và không stream được gì thêm. Monitor chỉ có ý nghĩa khi process đang active và có output tiếp tục.
Bước 2: Gắn Monitor Tool Vào Process
Sau khi có PID, yêu cầu Claude gắn Monitor vào process đó. Monitor Tool nhận hai tham số chính:
Monitor Tool parameters:
pid : int (bắt buộc, PID của background process)
timeout : int (tùy chọn, giây, mặc định 30. Tăng cho process dài)
Ví dụ session trong Claude Code:
You: Watch the dev server (PID 47823) for any compilation errors.
Use Monitor with timeout 300 for a 5-minute window.
Claude: I'll attach Monitor to PID 47823 with a 5-minute timeout.
[Monitor tool call: {pid: 47823, timeout: 300}]
-> Event: {type: "stdout", content: " webpack compiled successfully in 2341ms"}
-> Event: {type: "stdout", content: " Local: http://localhost:3000"}
-> (streaming, waiting for new events...)
Timeout nên đặt cao hơn thời gian bạn muốn watch. Dev server thường cần timeout 300-600 giây. Test runner cần timeout ít nhất bằng estimated test duration cộng thêm 30 giây buffer. Nếu process vẫn chạy khi timeout hết, Monitor gửi event {type: "timeout"} nhưng process vẫn tiếp tục chạy trong background, bạn có thể attach Monitor lại nếu cần.
Bước 3: Xử Lý Events Từ Monitor Stream
Monitor trả về events theo thứ tự chúng xảy ra. Claude đọc từng event và phản hồi phù hợp:
-> Event: {type: "stderr", content: "ERROR in ./src/App.tsx:23:5
Type 'string' is not assignable to type 'number'"}
Claude: TypeScript error at App.tsx line 23.
Let me read the file and fix the type mismatch.
[Read tool: src/App.tsx]
[Edit tool: fix type annotation on line 23]
Claude: Fixed. Changed parameter type from string to number.
Waiting for webpack to recompile...
-> Event: {type: "stdout", content: " webpack compiled successfully in 1891ms"}
Claude: Compilation successful after the fix.
Đây là lý do Monitor Tool mạnh hơn /loop cho long-running process: Claude có thể react ngay khi event xảy ra, không cần đợi poll interval. Nếu build fail ở giây thứ 8 sau khi spawn, Monitor gửi stderr event ngay giây thứ 8, Claude fix ngay. Với /loop interval 30 giây, bạn đợi đến lần poll tiếp theo.
Ba event type cần chú ý trong thực tế:
– stdout: Log output bình thường, thường không cần action
– stderr: Warnings hoặc errors, Claude có thể tự động check và propose fix
– exit_code 0: Process hoàn thành thành công, Monitor đóng
– exit_code khác 0: Process failed, Claude nên diagnose và đề xuất hướng fix

Monitor Tool Hoạt Động Trên Những Platform Nào?
Monitor Tool chỉ hoạt động trong Claude Code CLI. Đây là điểm quan trọng cần kiểm tra trước khi setup, vì nhiều developer nhận ra platform mình đang dùng không support sau khi đã đầu tư thời gian setup workflow.
Bảng đầy đủ theo Anthropic Tools Reference:
| Platform | Monitor Tool | Ghi chú |
|---|---|---|
| Claude Code CLI | Khả dụng | Full support từ v2.1.98 |
| Claude.ai web | Chưa xác nhận | Chưa có thông tin chính thức từ Anthropic |
| Amazon Bedrock | Không có | Tools không được expose qua Bedrock API |
| Google Vertex AI | Không có | Tương tự Bedrock |
| Azure AI Foundry | Không có | Tương tự Bedrock |
Trên thực tế, phần lớn use case của Monitor Tool là watch một build tool hoặc dev server đang chạy – đây là lý do nó được thiết kế để thay thế /loop.
Nếu bạn đang build agentic workflow trên Bedrock/Vertex và cần background process monitoring, hai lựa chọn thay thế là: (1) polling qua Lambda/Cloud Function với interval phù hợp, hoặc (2) dùng Claude Code CLI trong headless mode thay vì gọi API trực tiếp. Headless mode giữ nguyên được Monitor Tool support vì vẫn chạy qua CLI engine.

Khi Nào Nên Dùng Monitor Và Khi Nào Dùng /loop?
Monitor-Khi-Nào Rule là framework đơn giản để quyết định nhanh: nếu process chạy lâu hơn 30 giây, dùng Monitor. Ngắn hơn, /loop vẫn hợp lý vì overhead của Anti-Pattern Tam Giác chưa rõ rệt ở thời gian ngắn.
| Situation | Tool | Lý do |
|---|---|---|
| npm run dev (dev server) | Monitor | Process chạy vô thời hạn, cần event-driven |
| npm test (full suite, >1 phút) | Monitor | Long-running, Anti-Pattern Tam Giác áp dụng |
| docker build (3-10 phút) | Monitor | Build logs cần stream real-time |
| CI pipeline runner | Monitor | Multi-minute job, cần stderr capture |
| File watcher (nodemon, watchman) | Monitor | Process chạy liên tục, react to changes |
| npm test (unit tests, <30s) | /loop | Ngắn, Anti-Pattern Tam Giác chưa rõ rệt |
| Kiểm tra file tồn tại mỗi 5s | /loop | Poll pattern đơn giản, không cần streaming |
| Chờ API response một lần | /loop | One-shot check, không phải continuous stream |
Điểm phân biệt core giữa hai tool: Monitor phù hợp khi bạn muốn “nhận notification khi có gì xảy ra”. /loop phù hợp khi bạn muốn “check một điều kiện cụ thể theo interval”.
Monitor-Khi-Nào Rule dùng ngưỡng 30 giây là conservative. Trong thực tế, bất kỳ process nào có output stream liên tục đều benefit từ Monitor ngay cả khi chỉ chạy 15-20 giây, vì Anti-Pattern Tam Giác bắt đầu từ lần poll thứ hai trở đi. Với process một lần duy nhất và hoàn thành nhanh thì /loop vẫn là lựa chọn đơn giản hơn vì không cần capture PID.
Làm Thế Nào Để Monitor Nhiều Process Cùng Lúc?
Monitor Tool hỗ trợ concurrent monitoring: bạn có thể spawn nhiều background process và gắn Monitor vào từng cái một cách độc lập. Mỗi Monitor call là independent, nhận PID riêng và có timeout riêng.
# Spawn cả frontend và backend cùng lúc
npm run dev:frontend &
FRONTEND_PID=$!
npm run dev:backend &
BACKEND_PID=$!
echo "Frontend PID: $FRONTEND_PID"
echo "Backend PID: $BACKEND_PID"
Sau đó yêu cầu Claude monitor cả hai process:
You: Monitor both processes.
Frontend PID: 23441, Backend PID: 23558.
Alert me if either produces an error.
Claude: Attaching Monitor to both processes concurrently.
[Monitor call 1: {pid: 23441, timeout: 300}]
[Monitor call 2: {pid: 23558, timeout: 300}]
-> [PID 23441] stdout: "webpack compiled successfully"
-> [PID 23558] stdout: "API server running on port 3001"
-> [PID 23558] stderr: "Database connection refused at localhost:5432"
Claude: Backend has a database connection error. Let me check docker-compose...
Plugin-declared monitors và lifecycle: điểm quan trọng nhất bài này.
Nếu bạn khai báo monitor trong CLAUDE.md dưới dạng plugin tool, nó có auto-cleanup behavior khác hoàn toàn so với runtime monitors:
# CLAUDE.md -- plugin-declared monitor (tự cleanup khi session end)
tools:
- name: dev_server_monitor
type: monitor
pid_source: "npm run dev &"
auto_start: true
timeout: 3600
cleanup_on_exit: auto
Plugin-declared monitors được quản lý bởi Claude Code process lifecycle manager. Khi session end (dù là graceful hay abrupt), process và monitor tự động cleanup, không có orphan process nào.
Runtime monitors (gọi Monitor tool trực tiếp trong session) thì khác: session end đột ngột có thể để lại orphan process. Nên tường minh kill process trước khi đóng session:
# Cleanup trước khi đóng session
kill $FRONTEND_PID $BACKEND_PID 2>/dev/null
echo "Processes cleaned up"
Đây là lý do tại sao các automated workflow overnight nên dùng plugin-declared monitors trong CLAUDE.md thay vì runtime monitors. Kết hợp với Claude Code Hooks để trigger action dựa trên event type là cách setup production-grade nhất.
Xử Lý Sự Cố
Monitor không nhận events nào: Nguyên nhân phổ biến là PID sai hoặc process đã terminate trước khi Monitor kịp attach. Kiểm tra ps aux | grep <PID> để confirm process đang chạy. Nếu process khởi động quá nhanh, thêm sleep 2 sau khi spawn trước khi yêu cầu Claude attach Monitor.
Monitor trả về timeout ngay lập tức: Timeout mặc định là 30 giây. Nếu process không có output trong 30 giây đầu (dev server cần thời gian compile), tăng timeout khi yêu cầu Claude: “Monitor PID X with timeout 120”.
“Monitor tool not recognized” error: Bạn đang dùng Claude qua API, Bedrock, hoặc Vertex AI. Monitor Tool chỉ có trong Claude Code CLI. Xem platform matrix ở phần trên để chọn alternative phù hợp.
Process trở thành orphan: Nếu session kết thúc đột ngột, kiểm tra và cleanup:
# Tìm và kill orphan process theo tên
pkill -f "npm run dev"
pkill -f "node.*server"
lsof -ti:3000 | xargs kill -9 2>/dev/null # kill process giữ port 3000
stderr events nhưng Claude không tự fix: Monitor chỉ stream events, Claude quyết định action dựa trên nội dung events. Nếu muốn auto-fix cụ thể hơn, thêm instruction rõ ràng: “If you see a TypeScript error in stderr, read the file and fix it automatically without asking.”
Câu Hỏi Thường Gặp
Monitor Tool Trong Claude Code Là Gì?
Monitor Tool là built-in tool của Claude Code CLI cho phép stream stdout, stderr, exit_code và timeout events từ background process về conversation theo thời gian thực. Không block UI, không poll định kỳ. Ra mắt trong Claude Code v2.1.98, ngày 9 tháng 4 năm 2026. Không cần cài thêm gì, dùng ngay sau khi cập nhật lên v2.1.98+.
Monitor Tool Khác /loop Như Thế Nào?
/loop poll process theo interval cố định kể cả khi không có gì mới, gây Anti-Pattern Tam Giác (context bloat, orphaned process, wasted tokens). Monitor Tool chỉ gửi event khi process thực sự có output, giảm token consumption 20-40% cho process chạy hơn 10 phút. Monitor-Khi-Nào Rule: process >30 giây dùng Monitor, ngắn hơn thì /loop vẫn ổn.
Monitor Tool Có Trên Claude.ai Web Không?
Hiện tại Monitor Tool chỉ được confirm có trong Claude Code CLI. Bedrock, Vertex AI và Azure Foundry đều không có. Claude.ai web chưa có thông tin chính thức. Muốn dùng Monitor Tool thì cần cài đặt Claude Code CLI trên máy local.
Làm Sao Cleanup Monitor Khi Dùng Xong?
Plugin-declared monitors trong CLAUDE.md tự cleanup khi session end. Runtime monitors cần bạn kill process thủ công trước khi đóng session: kill $PID. Nếu quên, dùng pkill -f "tên-process" hoặc lsof -ti:PORT | xargs kill -9 để cleanup theo port. Automated workflow overnight nên dùng plugin-declared monitors để tránh vấn đề này.
Monitor Tool Có Timeout Không?
Có. Timeout mặc định là 30 giây, configurable qua parameter timeout: N (tính bằng giây). Dev server: 300-600 giây. Build process: 120-300 giây. Test runner: estimated duration cộng 30 giây buffer. Khi timeout, Monitor gửi event {type: "timeout"} nhưng process vẫn tiếp tục chạy trong background. Bạn có thể attach Monitor lại với call mới nếu cần tiếp tục theo dõi.
Dùng Monitor Tool Cho npm run dev Được Không?
Được. Spawn npm run dev &, lấy PID, yêu cầu Claude gắn Monitor với timeout: 600. Claude sẽ nhận compilation events real-time và có thể auto-fix TypeScript errors, module missing errors khi chúng xuất hiện trong stderr. Đây là một trong những use case phổ biến nhất. Kết hợp với tính năng autofix PR để auto-fix CI failures từ đầu đến cuối pipeline.
Kết Luận
Monitor Tool giải quyết Anti-Pattern Tam Giác (context bloat, orphaned process, wasted tokens) mà /loop tạo ra khi dùng cho long-running process. Monitor-Khi-Nào Rule đơn giản: process nào chạy lâu hơn 30 giây thì dùng Monitor; ngắn hơn thì /loop vẫn ổn.
Hai điểm cần nhớ nhất: Monitor Tool chỉ có trong Claude Code CLI, không phải Bedrock hay Vertex. Và plugin-declared monitors trong CLAUDE.md có auto-cleanup lifecycle khác runtime monitors, phù hợp hơn cho automated overnight workflow.
Bước tiếp theo: nếu bạn đang dùng Monitor để watch CI pipeline, kết hợp với /autofix-pr để Claude tự động push fix khi CI fail. Hoặc đọc thêm về Auto Mode để hiểu cách Monitor Tool fit vào các agentic session dài. Xem tổng hợp tất cả tính năng tại roadmap đầy đủ Claude Code 2026.
