Sẽ mở trong thẻ mới
PDL AIAI Worker — trợ lý AI trực 24/7: trả lời khách, xử lý yêu cầu, báo cáo tự động
PDL DigitalBuild. Automate. Grow.
Nhận tư vấn
Công cụ AI

Codex exec và GitHub Actions: tự động hoá việc lập trình lặp lại an toàn

Đăng Vũ HảiĐăng 25.10.2026Cập nhật 11.10.2026≈ … phút đọc
Hai màn hình máy tính đặt trên bàn trong phòng tối, hiển thị nhiều cửa sổ dòng lệnh chữ xanh đang chạy

Cập nhật tháng 10/2026. Codex CLI ra phiên bản mới thường xuyên nên tên tuỳ chọn có thể thay đổi. Trước khi dùng thật, hãy chạy codex exec --help và đối chiếu với tài liệu chính thức dẫn ở cuối bài.

Bài này dành cho ai: lập trình viên, trưởng nhóm kỹ thuật và agency web đã dùng Codex ở chế độ trò chuyện, nay muốn giao việc lặp lại cho Codex chạy tự động.

Bạn sẽ nắm được gì: chế độ không tương tác codex exec hoạt động ra sao; cách cấp quyền sandbox vừa đủ; cách chạy Codex trong GitHub Actions bằng openai/codex-action; 3 mẫu lệnh cho kiểm tra chính tả nội dung, cập nhật changelog và review định kỳ; lỗi thường gặp; bài tập thực hành.

Thời gian đọc: khoảng 13 phút, thực hành thêm 60–90 phút.

Bài OpenAI Codex cho đội nhỏ đã hướng dẫn cài Codex CLI, viết AGENTS.md, giao việc lên đám mây và bật review qua @codex review. Bài này đi tiếp: biến Codex thành một bước trong kịch bản, chạy theo lịch hoặc theo sự kiện, kết quả ghi ra tệp để người duyệt sau.

Hai màn hình máy tính đặt trên bàn trong phòng tối, hiển thị nhiều cửa sổ dòng lệnh chữ xanh đang chạy
Ở chế độ không tương tác, Codex chạy như một lệnh bình thường trong kịch bản, không cần ai ngồi gõ.

1. Chế độ không tương tác là gì

Khi gõ codex, bạn vào giao diện trò chuyện trong cửa sổ dòng lệnh. Khi gõ codex exec "yêu cầu", Codex nhận yêu cầu, tự làm đến khi xong rồi thoát, không hỏi lại. Tiến trình được in ra stderr, còn chỉ câu trả lời cuối được in ra stdout. Nhờ vậy bạn nối được kết quả sang lệnh khác hoặc ghi thẳng vào tệp.

Có ba cách dùng chính, từ đơn giản đến tự động hoàn toàn:

codex exec

Chạy một yêu cầu từ kịch bản shell, cron hoặc bước CI. Mặc định chỉ được đọc.

codex review

Lệnh review không tương tác: so với nhánh gốc (--base), một commit (--commit) hoặc thay đổi chưa commit (--uncommitted).

openai/codex-action

Action chính thức cho GitHub Actions: cài CLI, giữ API key qua proxy, chạy codex exec với quyền bạn đặt.

Khác với review qua @codex trong pull request, cách trong bài này chạy trên máy hoặc runner của bạn và thường xác thực bằng API key, trả tiền theo lượng dùng.

2. Việc nào nên tự động hoá, việc nào không

Ứng viên tốt là việc lặp lại, đầu vào rõ, kết quả dễ kiểm tra:

  • Rà nội dung: lỗi chính tả, câu cụt, liên kết trỏ sai trong tệp Markdown, bản dịch thiếu chuỗi.
  • Giấy tờ phát hành: soạn nháp changelog, ghi chú phát hành từ danh sách commit.
  • Review định kỳ: mỗi tuần quét các thay đổi đã gộp, tìm chỗ thiếu kiểm tra dữ liệu đầu vào, chỗ thiếu test.

Không nên để chạy tự động: thay đổi thanh toán, di chuyển cơ sở dữ liệu, triển khai lên website đang chạy. Nguyên tắc chung: Codex đề xuất, người quyết định. Nếu bạn đang cân nhắc tự động hoá ở quy mô cả công ty, đọc thêm 5 việc nên làm trước khi tự động hoá quy trình bằng AI.

3. Thiết lập codex exec an toàn từng bước

1

Chạy thử ở chế độ chỉ đọc

Vào thư mục dự án (phải là kho Git) và gõ codex exec "tóm tắt cấu trúc dự án và liệt kê 5 khu vực rủi ro nhất". Sandbox mặc định của codex exec là chỉ đọc, nên lần chạy đầu không sửa được gì.

2

Ghi kết quả ra tệp

Thêm -o bao-cao.md (dạng dài --output-last-message) để lưu câu trả lời cuối vào tệp, hoặc nối | tee bao-cao.md. Có thể nối dữ liệu vào bằng đường ống, như mẫu 2 bên dưới. Khi cần máy đọc, dùng --json để nhận luồng sự kiện JSON Lines, hoặc --output-schema schema.json để buộc câu trả lời đúng khuôn JSON Schema.

3

Chỉ mở quyền ghi khi thật cần

Muốn Codex sửa tệp, thêm --sandbox workspace-write: được ghi trong thư mục làm việc, ngoài đó vẫn bị chặn. Tuỳ chọn cũ --full-auto nay là cờ tương thích đã lỗi thời, Codex in cảnh báo và tài liệu khuyên dùng --sandbox workspace-write. Chế độ danger-full-access chỉ dành cho môi trường cô lập dùng một lần.

4

Xác thực đúng cách khi chạy tự động

Mặc định codex exec dùng lại phiên đăng nhập đã lưu của CLI. Trên máy chủ hoặc CI, tài liệu khuyên dùng API key, đặt biến CODEX_API_KEY chỉ cho đúng lệnh cần nó, ví dụ CODEX_API_KEY=... codex exec --json "...". Không khai báo khoá ở cấp cả job trong workflow có chạy code của kho.

5

Viết AGENTS.md cho chế độ chạy tự động

codex exec vẫn đọc AGENTS.md như phiên trò chuyện: tệp ở thư mục Codex home trước, rồi các tệp từ gốc kho xuống thư mục hiện tại, tệp gần hơn ghi đè tệp xa hơn, tổng dung lượng mặc định tối đa 32 KiB. Vì không ai hỏi lại giữa chừng, hãy ghi rõ thư mục cấm sửa, định dạng báo cáo và “không chắc thì ghi vào báo cáo”. Kiểm tra tệp đã nạp bằng codex exec "List active instruction sources". Xem thêm bài CLAUDE.md và AGENTS.md cho dự án web.

4. Ba mẫu lệnh cho việc lặp lại

Sửa phần trong ngoặc vuông cho đúng dự án. Mỗi mẫu nêu rõ điều Codex không được làm.

Mẫu 1: Kiểm tra chính tả nội dung trước khi đăng (chỉ đọc)

codex exec -o bao-cao-chinh-ta.md “Đọc các tệp .md trong thư mục [content/bai-viet].
Tìm: lỗi chính tả tiếng Việt, sai dấu thanh, lặp từ, câu cụt, liên kết nội bộ trỏ tới tệp không tồn tại.
Với mỗi lỗi ghi: tên tệp, số dòng, đoạn sai, đề xuất sửa.
Bỏ qua tên riêng, tên thương hiệu và đoạn nằm trong khối code.
Không sửa tệp nào. Nếu không chắc một từ có sai hay không, ghi vào mục Cần người kiểm tra.”

Không có --sandbox nên lệnh chạy ở chế độ chỉ đọc; người biên tập tự quyết định sửa chỗ nào.

Mẫu 2: Soạn mục changelog từ danh sách commit

git log –oneline [v1.4.0]..HEAD | codex exec –sandbox workspace-write “Danh sách commit ở trên là các thay đổi từ bản phát hành trước.
1. Thêm một mục mới lên đầu CHANGELOG.md cho phiên bản [1.5.0], theo đúng định dạng các mục cũ.
2. Gom commit thành nhóm: Tính năng mới, Sửa lỗi, Thay đổi nội bộ. Viết lại bằng tiếng Việt dễ hiểu cho khách hàng.
3. Bỏ qua commit chỉ sửa định dạng hoặc cập nhật thư viện.
Chỉ sửa CHANGELOG.md, không đụng tệp khác. Không tự tạo tag hay commit.”

Sau khi chạy, gõ git diff CHANGELOG.md để duyệt rồi tự commit.

Mẫu 3: Review định kỳ mỗi sáng thứ Hai trên GitHub Actions

name: Codex review hang tuan
on:
schedule:
– cron: ‘0 1 * * 1’
workflow_dispatch:
jobs:
codex:
runs-on: ubuntu-latest
permissions:
contents: read
outputs:
final_message: ${{ steps.run_codex.outputs.final-message }}
steps:
– uses: actions/checkout@v5
with:
fetch-depth: 0
persist-credentials: false
– name: Run Codex
id: run_codex
uses: openai/codex-action@v1
with:
openai-api-key: ${{ secrets.OPENAI_API_KEY }}
permission-profile: “:read-only”
prompt-file: .github/codex/review-tuan.md
report:
runs-on: ubuntu-latest
needs: codex
steps:
– name: Ghi ket qua vao trang tom tat
env:
CODEX_FINAL_MESSAGE: ${{ needs.codex.outputs.final_message }}
run: echo “$CODEX_FINAL_MESSAGE” >> “$GITHUB_STEP_SUMMARY”

Lịch cron của GitHub tính theo giờ UTC: 0 1 * * 1 là 8 giờ sáng thứ Hai giờ Việt Nam. Tệp .github/codex/review-tuan.md chứa yêu cầu, ví dụ: “Review các commit gộp vào main trong 7 ngày qua, tập trung vào bảo mật và chỗ thiếu test”. Job Codex chỉ có quyền đọc; job thứ hai ghi kết quả vào trang tóm tắt, không cần API key. Tuỳ chọn permission-profile đang ở dạng beta và cần Codex CLI 0.138.0 trở lên; kho cũ có thể dùng đầu vào sandbox (dạng cũ), không dùng cả hai cùng lúc.

Cận cảnh màn hình tối hiển thị trình soạn mã với nhiều dòng code nhiều màu, chụp nghiêng
Review định kỳ không thay người review, nhưng giúp không bỏ sót những thay đổi đã gộp vội trong tuần.

5. Đưa Codex vào GitHub Actions: 6 nguyên tắc an toàn

  1. Lưu khoá trong GitHub Secrets và chỉ truyền vào action qua openai-api-key.
  2. Quyền tối thiểu cho job chạy Codex: contents: read. Việc cần quyền ghi (bình luận PR, đẩy nhánh) tách sang job khác không có API key.
  3. Chọn hồ sơ quyền hẹp nhất: :read-only cho việc đọc và báo cáo, :workspace khi cần sửa tệp. Hồ sơ :workspace không có mạng, nên cài thư viện ở bước trước khi chạy Codex.
  4. Coi nội dung PR, issue, commit là dữ liệu chưa tin cậy. Tài liệu OpenAI khuyên làm sạch đầu vào lấy từ pull request và soát cả bình luận HTML, chữ ẩn trước khi đưa cho Codex.
  5. Giới hạn người kích hoạt: mặc định chỉ người có quyền ghi vào kho mới kích hoạt được action; thêm người hoặc bot tin cậy bằng allow-users, allow-bots.
  6. Để action là bước cuối của job, dùng runner Linux hoặc macOS để giữ chiến lược mặc định drop-sudo (thu hồi sudo trước khi Codex chạy).

6. Ví dụ minh hoạ: agency web 4 người ở Hà Nội

Tình huống giả định: một agency bảo trì 15 website WordPress và một kho tài liệu hướng dẫn cho khách viết bằng Markdown. Viết changelog tốn nhiều giờ, còn lỗi chính tả thường do khách phát hiện.

  • Mỗi tối: cron trên máy chủ nội bộ chạy mẫu 1, biên tập viên đọc báo cáo đầu giờ sáng.
  • Khi phát hành: lập trình viên chạy mẫu 2, đọc git diff, sửa vài câu rồi commit.
  • Sáng thứ Hai: workflow mẫu 3 chạy, trưởng nhóm tạo việc sửa cho các mục mức cao.

AGENTS.md của họ cấm sửa vendor/ và plugin bên thứ ba, yêu cầu báo cáo chia mức Cao, Trung bình, Thấp. Nếu đội bạn dùng Claude Code song song, quy trình review diff tương tự được mô tả trong bài Claude Code sửa lỗi website WordPress.

Nhìn từ trên xuống một người đàn ông ngồi bàn gỗ sáng, làm việc với màn hình lớn và hai laptop cùng giấy tờ
Codex lo phần soạn nháp và rà soát lặp lại; người trong đội giữ quyền duyệt cuối.

7. Lỗi thường gặp và cách khắc phục

Codex báo không chạy vì thư mục không phải kho Git

codex exec mặc định yêu cầu chạy trong kho Git. Hãy git init cho thư mục đó; chỉ dùng --skip-git-repo-check khi chắc chắn lệnh chỉ đọc.

Codex nói đã sửa nhưng tệp không đổi

Bạn đang ở sandbox chỉ đọc mặc định. Thêm --sandbox workspace-write và kiểm tra tệp nằm trong thư mục làm việc.

Workflow trượt ở bước cài thư viện hoặc gọi mạng

Hồ sơ :workspace và :read-only không cấp mạng cho Codex. Chuyển bước npm ci, composer install lên trước bước chạy Codex.

8. Bài tập thực hành

  1. Chạy mẫu 1 cho một thư mục tài liệu, đếm số lỗi báo nhầm rồi thêm quy tắc vào AGENTS.md để giảm chúng.
  2. Chạy mẫu 2 trên một nhánh thử, so với changelog bạn tự viết.
  3. Tạo kho thử trên GitHub, thêm secret OPENAI_API_KEY, đưa workflow mẫu 3 vào và bấm chạy tay qua workflow_dispatch. Xem trang tóm tắt của lần chạy.

9. Thuật ngữ cần biết

  • Chế độ không tương tác (non-interactive mode): cách chạy Codex bằng codex exec từ kịch bản hoặc CI, không mở giao diện trò chuyện. Nguồn: Non-interactive mode.
  • Sandbox mode: mức giới hạn Codex được đọc, ghi và dùng mạng tới đâu, gồm read-only, workspace-write, danger-full-access. Nguồn: Agent approvals and security.
  • Permission profile: hồ sơ quyền đặt sẵn cho Codex trong GitHub Actions, như :read-only hay :workspace. Nguồn: openai/codex-action.

10. Tìm hiểu thêm

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

Chạy codex exec trong CI tốn phí thế nào?

Khi xác thực bằng API key, bạn trả theo lượng dùng của API. Bắt đầu với việc nhỏ, chạy theo lịch thay vì mỗi lần đẩy code, và theo dõi chi phí vài tuần đầu.

Có nên cho Codex tự commit và đẩy code trong workflow không?

Không nên với đội mới bắt đầu. Để Codex tạo bản vá hoặc báo cáo, rồi một người mở pull request để duyệt như mọi thay đổi khác.

PDL Digital đào tạo và triển khai AI cho đội ngũ doanh nghiệp, từ thiết lập tác tử lập trình, viết AGENTS.md đến đưa AI vào quy trình CI có người duyệt an toàn. Xem trang đào tạo để chọn khoá phù hợp.

Tác giả
Đăng Vũ Hải
Thuộc Ban AI Worker của PDL, chuyên thử và so sánh công cụ AI cho văn phòng: trợ lý AI, tự động hoá, bảng tính. Phụ trách chuỗi hướng dẫn dùng Claude.
Tư vấn 1:1

Bạn đang có bài toán số cần gỡ?

Website · AI · Quảng cáo · 360VR — chuyên gia PDL phản hồi trong giờ làm việc (T2–T7, 8h–18h).
Xem giải pháp
PDL · Tư vấn 1:1

Nhận tư vấn
miễn phí

Để lại thông tin, chuyên viên PDL sẽ liên hệ để hiểu nhu cầu và đề xuất giải pháp phù hợp ngân sách của bạn.

  • Phân tích nhanh hiện trạng website, quảng cáo, kênh bán hàng
  • Đề xuất lộ trình & báo giá minh bạch, rõ từng hạng mục
  • Không ràng buộc: nghe tư vấn xong mới quyết định
Giờ làm việc T2–T7 · 08:00–18:00

Chỉ mất khoảng 30 giây

Bạn cần tư vấn về

🔒 Thông tin được bảo mật, chỉ dùng để PDL liên hệ tư vấn.