MCP, skill, plugin và hooks trong Codex: mở rộng tác tử bằng công cụ ngoài

MCP, skill, plugin và hooks trong Codex: mở rộng tác tử bằng công cụ ngoài
3 Tháng 11, 2026 Lê Quốc Nghĩa 10 phút đọcHướng dẫn

MCP trong Codex là cách cho tác tử lập trình Codex của OpenAI gọi công cụ và đọc dữ liệu từ các MCP server bên ngoài, khai báo bằng lệnh codex mcp hoặc bảng [mcp_servers.<tên>] trong file config.toml. Bên cạnh MCP, Codex còn ba cơ chế mở rộng khác: skill (gói hướng dẫn có thể kèm script), plugin (gói đóng sẵn nhiều thứ, cài từ chợ plugin) và hooks (lệnh chạy ở các mốc trong vòng đời phiên). Bài này dựa trên tài liệu Codex trên learn.chatgpt.com và --help của Codex CLI bản 0.162.1, đọc ngày 03/11/2026; tính năng có thể đổi theo phiên bản. Bài không hứa tiện ích nào an toàn hay hiệu quả và không đưa cấu hình hook mẫu vì chúng tôi chưa viết hook chặn nào. Bài gồm cách thêm MCP server, skill, plugin, các mốc hook, bảng so sánh, rủi ro, cây quyết định và kinh nghiệm thật của OPCAIOS. Nếu chưa rõ MCP, đọc trước MCP là gì.

Sơ đồ bốn cách mở rộng Codex: MCP server nối công cụ ngoài qua codex mcp và config.toml, skill là thư mục SKILL.md trong .agents/skills, plugin đóng gói skill, MCP server và hooks cài từ chợ plugin, hooks chạy ở các mốc như SessionStart, PreToolUse, PostToolUse và Stop
Bốn cơ chế mở rộng Codex và nơi khai báo từng cơ chế. Sơ đồ: OPCAIOS.

Thêm MCP server cho Codex bằng lệnh codex mcp như thế nào?

Thêm MCP server cho Codex bằng dòng lệnh là cách nhanh nhất: lệnh codex mcp add ghi khai báo vào ~/.codex/config.toml thay cho việc sửa tay. Theo codex mcp --help của Codex CLI 0.162.1 (chạy ngày 03/11/2026), nhóm lệnh gồm list, get, add, remove, login và logout. Lệnh add nhận một tên, rồi hoặc --url cho server HTTP dạng streamable, hoặc dấu -- theo sau là lệnh khởi động server chạy cục bộ (stdio). Cờ --env KEY=VALUE chỉ dùng cho server stdio, còn --bearer-token-env-var chỉ dùng cho server HTTP và nhận tên biến môi trường chứa token, không nhận chính token. Ví dụ trong tài liệu MCP của Codex:

codex mcp add context7 -- npx -y @upstash/context7-mcp
codex mcp list
codex mcp login <tên-server>

Trong giao diện terminal của Codex, gõ /mcp để xem server đang hoạt động.

Khai báo MCP server trong config.toml gồm những khoá nào?

Khai báo trong config.toml kiểm soát chi tiết hơn lệnh add. Theo trang MCP của Codex (learn.chatgpt.com/docs/extend/mcp, đọc ngày 03/11/2026), mỗi server là một bảng [mcp_servers.<tên>]. Server stdio cần command, có thể thêm args, env, cwd. Server HTTP cần url, có thể thêm bearer_token_env_var và http_headers. Các khoá chung đáng biết: startup_timeout_sec (mặc định 10 giây), tool_timeout_sec (mặc định 60 giây), enabled, required, enabled_tools và disabled_tools.

[mcp_servers.context7]
command = "npx"
args = ["-y", "@upstash/context7-mcp"]
tool_timeout_sec = 60

[mcp_servers.vi-du-http]
url = "https://mcp.example.com/mcp"
bearer_token_env_var = "VI_DU_TOKEN"
enabled_tools = ["search"]

Server thứ hai là ví dụ giả định. Tài liệu lưu ý client secret OAuth nếu khai báo sẽ nằm dạng chữ thường trong file, nên giữ file kín và ngoài git.

Skill trong Codex là gì và đặt ở đâu?

Skill trong Codex là một thư mục chứa file SKILL.md (hướng dẫn kèm siêu dữ liệu), có thể thêm scripts/, references/ và assets/, giúp Codex làm đúng một quy trình lặp lại. Theo trang build-skills trong tài liệu Codex (đọc ngày 03/11/2026), phần đầu SKILL.md bắt buộc có name và description, và skill dựa trên chuẩn mở agent skills. Codex tìm skill ở bốn tầng:

  1. Kho mã: .agents/skills trong thư mục hiện tại, thư mục cha và gốc kho.
  2. Người dùng: $HOME/.agents/skills.
  3. Quản trị: /etc/codex/skills.
  4. Hệ thống: đi kèm Codex, gồm skill-creator và skill-installer.

Gọi skill bằng /skills hoặc gõ $ kèm tên; Codex cũng tự chọn skill khi việc khớp description. Codex chỉ nạp tên và mô tả trước, đọc toàn bộ SKILL.md khi chọn skill đó; danh sách ban đầu mặc định chiếm tối đa 2% cửa sổ ngữ cảnh. Vì thế description nên nói rõ khi nào dùng và khi nào không. Khái niệm skill nói chung có ở bài skill là gì.

Plugin và chợ plugin của Codex hoạt động ra sao?

Plugin của Codex là gói đóng sẵn nhiều khả năng để cài một lần: theo trang Plugins của tài liệu Codex (đọc ngày 03/11/2026), một plugin có thể gồm skill, MCP server, tiện ích trình duyệt và hooks. Codex CLI và ứng dụng desktop dùng được plugin, tiện ích IDE thì chưa. Có ba cách cài và quản lý:

  1. Trong Codex CLI, gõ /plugins, cài từ một chợ đã cấu hình, rồi mở phiên mới.
  2. Dùng lệnh: codex plugin add <plugin>@<chợ> để cài, codex plugin list để xem, codex plugin remove để gỡ (theo codex plugin --help).
  3. Thêm chợ riêng: codex plugin marketplace add nhận đường dẫn cục bộ, owner/repo, hoặc URL Git; có upgrade để làm mới và remove để bỏ.

Thư mục Plugins có tab OpenAI, tab workspace và tab cá nhân. So sánh với lệnh, skill, plugin và MCP phía Claude Code có ở bài slash command, skill, plugin hay MCP; bài này không lặp lại phần đó.

Hooks trong Codex chạy ở những mốc nào?

Hooks trong Codex là lệnh do bạn khai báo, chạy tự động ở các mốc cố định của phiên, khác với hướng dẫn trong AGENTS.md vốn chỉ là lời đề nghị cho mô hình. Theo trang Hooks (learn.chatgpt.com/docs/hooks, đọc ngày 03/11/2026), Codex có 14 mốc: SessionStart, SessionEnd, UserPromptSubmit, PreToolUse, PostToolUse, PermissionRequest, PreCompact, PostCompact, SubagentStart, SubagentStop, Stop, Interrupt, PreModelRequest và PostModelRequest. Hook đặt trong ~/.codex/hooks.json, trong bảng [hooks] của config.toml, hoặc trong .codex/ của kho; plugin cũng mang hook theo. Ba điểm quan trọng:

  1. Chỉ một số mốc chặn được việc: PreToolUse có thể từ chối lệnh, UserPromptSubmit chặn prompt, PermissionRequest cho phép hoặc từ chối; mã thoát 2 kèm lý do là một cách chặn.
  2. PostToolUse chặn chỉ thay kết quả, không hoàn tác lệnh đã chạy; hook chạy nền và các mốc như SessionEnd, Interrupt không chặn được.
  3. Hook không do quản trị cấp phải được xem và tin cậy trước khi chạy; sửa hook là phải tin cậy lại. Dùng /hooks để xem, tin cậy hoặc tắt.

Hooks bật sẵn, tắt bằng hooks = false trong [features]. Với hook ở phía Claude Code, xem hooks trong Claude Code.

So sánh MCP, skill, plugin và hooks trong Codex

Bốn cơ chế giải bốn bài toán khác nhau. Bảng tóm tắt theo tài liệu đọc ngày 03/11/2026:

Cơ chế Giải bài toán gì Khai báo ở đâu Ai quyết định khi nào chạy
MCP server Cho Codex gọi công cụ, đọc dữ liệu hệ thống ngoài codex mcp add, [mcp_servers.<tên>] Mô hình chọn gọi công cụ, theo chế độ phê duyệt
Skill Dạy Codex một quy trình lặp lại SKILL.md trong .agents/skills Bạn gọi bằng $, hoặc mô hình tự chọn theo mô tả
Plugin Cài trọn gói skill, MCP, hooks một lần /plugins, codex plugin add Tuỳ thành phần bên trong
Hook Chạy lệnh chắc chắn ở một mốc, có thể chặn hooks.json, [hooks] Hệ thống, mỗi khi tới mốc

Cách nhớ: MCP là tay chân, skill là sổ tay, plugin là hộp đóng gói, hook là cái chốt.

Cài tiện ích lạ cho Codex có những rủi ro gì?

Rủi ro chính khi cài MCP server, skill hay plugin lạ là trao cho mã của người khác quyền chạy trên máy và đọc dữ liệu Codex đọc được. Năm rủi ro cụ thể:

  1. MCP server stdio là một chương trình chạy trên máy bạn; lệnh như npx -y tải và chạy gói mới nhất mà không hỏi lại.
  2. Mô tả công cụ và kết quả trả về từ MCP server đi thẳng vào ngữ cảnh mô hình, nên có thể chứa chỉ thị cài cắm (prompt injection).
  3. Skill có thể kèm script; Codex chạy script đó trong khuôn sandbox và phê duyệt hiện hành, nhưng nếu bạn đã nới quyền thì script có quyền tương ứng.
  4. Plugin gom nhiều thứ một lúc, kể cả hook cần được xem và tin cậy trước khi chạy.
  5. Token và client secret khai báo trong config.toml lộ ra nếu file bị commit.

Biện pháp: cài từ nguồn đọc được mã, khoá phiên bản gói, dùng enabled_tools bật đúng công cụ cần, để token trong biến môi trường, giữ phê duyệt chặt khi thử. Xem thêm bảo mật khi dùng AI viết code.

Cây quyết định: nên dùng cơ chế nào?

Hỏi lần lượt, dừng ở câu đầu tiên trả lời "có":

  1. Việc này phải xảy ra chắc chắn, bất kể mô hình quyết định gì (chặn lệnh nguy hiểm, ghi nhật ký)? Dùng hook.
  2. Codex cần đọc hoặc ghi vào một hệ thống bên ngoài (GitHub, cơ sở dữ liệu, lịch)? Dùng MCP server.
  3. Đây là quy trình nhiều bước bạn hay giải thích lại? Viết skill.
  4. Cần mang cùng lúc skill, MCP và hook sang máy khác hoặc cho cả nhóm? Đóng thành plugin, hoặc cài plugin có sẵn.

Nếu chỉ là quy tắc chung như "trả lời tiếng Việt", để trong AGENTS.md là đủ, không cần cơ chế nào.

Kinh nghiệm của OPCAIOS

OPCAIOS dùng Codex CLI bản 0.162.x và ứng dụng desktop Codex. Những điều có thật, kiểm tra ngày 03/11/2026:

  1. Các plugin đã bật, đều từ chợ plugin của OpenAI: trình duyệt, hiển thị trực quan, Gmail, Google Calendar, Slack, tài liệu, PDF, bảng tính và trình chiếu. Máy cũng có cài ứng dụng Computer Use của Codex. Chúng tôi chưa thống kê tần suất dùng từng plugin, nên chỉ nói "đã bật".
  2. Hooks của Codex được cấu hình ở các mốc bắt đầu phiên, gửi prompt, trước và sau công cụ, xin quyền, subagent và dừng, nhưng chỉ để báo trạng thái phiên cho một công cụ quản lý terminal. Chưa có hook nào chặn lệnh.
  3. Thư mục plugin code review có tồn tại nhưng trống, nên chúng tôi không khẳng định đã dùng Codex review code thường xuyên.

Điều chưa làm: chưa đo plugin nào tiết kiệm thời gian, chưa có hook bảo vệ nào thay cho kỷ luật thủ công.

Câu hỏi thường gặp

MCP server đã thêm cho Codex CLI có dùng được trong ứng dụng desktop không?

Có, theo tài liệu MCP của Codex đọc ngày 03/11/2026: ứng dụng desktop, Codex CLI và tiện ích IDE dùng chung cấu hình MCP trong ~/.codex/config.toml, nên thêm một lần bằng codex mcp add là cả ba thấy. Riêng ChatGPT bản web không đọc file cấu hình cục bộ; truy cập công cụ MCP từ web đi qua plugin. Cấu hình ở .codex/config.toml của dự án chỉ có hiệu lực khi dự án đã được tin cậy.

Skill của Claude Code có dùng lại được cho Codex không?

Về định dạng thì gần nhau: cả hai dùng thư mục có SKILL.md với name và description, và tài liệu Codex nói skill dựa trên chuẩn mở agent skills. Khác biệt nằm ở nơi đặt: Codex tìm trong .agents/skills của kho và $HOME/.agents/skills, không phải thư mục riêng của Claude Code. Skill gọi công cụ riêng của một tác tử cần sửa lại; chúng tôi chưa kiểm chứng việc dùng chung.

Hook của Codex có chặn được lệnh nguy hiểm không?

Có thể, ở đúng mốc. Theo trang Hooks đọc ngày 03/11/2026, hook PreToolUse có thể từ chối một lệnh trước khi chạy, và hook PermissionRequest có thể từ chối yêu cầu cấp quyền; mã thoát 2 kèm lý do là một cách chặn. Hook PostToolUse thì không hoàn tác được lệnh đã chạy. Hook chạy nền không chặn được gì, và mọi hook phải được tin cậy trước khi chạy. OPCAIOS chưa viết hook chặn nên không đưa mẫu.

Có nên cài nhiều plugin cùng lúc không?

Không nên cài theo kiểu thấy là bật. Mỗi plugin có thể mang theo MCP server, skill và hook, nghĩa là thêm công cụ cho mô hình chọn, thêm mô tả chiếm ngữ cảnh và thêm mã chạy trên máy. Bật plugin khi có việc cụ thể, đọc nó gồm gì, xem hook trong /hooks, gỡ bằng codex plugin remove khi thôi dùng. Tài liệu lưu ý gỡ plugin trong ChatGPT không tự ngắt kết nối MCP của plugin đó.

Người không biết lập trình nên bắt đầu mở rộng Codex từ đâu?

Bắt đầu từ AGENTS.md cho quy tắc chung, rồi cài một plugin chính chủ từ tab OpenAI trong thư mục Plugins cho đúng việc đang cần, thay vì tự viết MCP server hay hook. Khi đã quen, thử $skill-creator để Codex soạn skill từ mô tả của bạn. Hook để sau cùng vì cần hiểu lệnh shell. Bài quy trình an toàn cho người không biết code có các bước nền. Muốn được hướng dẫn trực tiếp, xem khoá đào tạo ứng dụng AI của OPCAIOS.

Nguồn: tài liệu Codex trên learn.chatgpt.com (các trang extend/mcp, build-skills, plugins, hooks; chuyển hướng từ developers.openai.com/codex) và codex --help, codex mcp --help, codex plugin --help của Codex CLI 0.162.1, đọc ngày 03/11/2026. Điều chưa kiểm chứng: cấu trúc JSON chi tiết của hooks.json, việc dùng chung skill giữa Codex và Claude Code, hành vi plugin trong tiện ích IDE ở bản sau; tính năng có thể đổi theo phiên bản. Kinh nghiệm là của OPCAIOS.

Lê Quốc Nghĩa
Lê Quốc Nghĩa
Người xây dựng OPCAIOS

Để lại bình luận

Email của bạn sẽ không hiển thị công khai. Bình luận sẽ hiển thị sau khi được duyệt.