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

URL: https://opcaios.org/blog/mcp-skill-va-hooks-trong-codex
Ngày: 2026-11-03
Cập nhật: 2026-11-03
Tác giả: Lê Quốc Nghĩa
Chuyên mục: Hướ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ì](/blog/mcp-la-gi).

![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](https://opcaios.org/images/blog/mcp-skill-va-hooks-trong-codex/so-do.webp)
*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:

```bash
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`.

```toml
[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ì](/blog/skill-la-gi-cach-dung-skill).

## 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](/blog/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](/blog/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](/blog/bao-mat-khi-dung-ai-viet-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](/blog/agents-md-la-gi) 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](/blog/tac-tu-lap-trinh-cho-nguoi-khong-biet-code-quy-trinh-an-toan) 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](/services/dao-tao-ung-dung-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.*
