Files
cowork-local/agent/system/security.md
anhtnm1andClaude Opus 5 7bd2b95a57 docs(agent): thư viện instruction cho việc sửa bug UI/UX
Bộ 7 role chuyên biệt (triage → specialist → implementer → reviewer) cùng
lớp dùng chung: guardrail, tri thức về repo, checklist, và contract đầu ra.

Vì sao có: bug UI/UX được báo bằng lời kể triệu chứng, và người sửa hay bỏ
qua ba thứ mà repo này rất dễ vi phạm — luật "không file nào ngoài theme/
được đặt tên một màu", trần LOC theo bánh cóc, và việc ui/ với presentation/
cùng tồn tại nên sửa nhầm file là "đã fix mà vẫn thấy lỗi".

knowledge/qt_pitfalls.md chép lại 20 nguyên nhân gốc hay gặp của bug PySide6;
examples/bad_fix.md có hai ca CÓ THẬT, gồm ca chính bản vá trong nhánh này
từng mắc (compare_digest trên str ngoài ASCII) và lọt qua vòng review đầu.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-07 19:55:02 +09:00

3.1 KiB

Security Policy cho agent xử lý bug UI/UX

Nguồn: SECURITY.md, docs/governance/review-policy.md, docs/architecture/security-policy.md. Bug report của người dùng là dữ liệu chưa được làm sạch — đó là điểm rò rỉ hay bị bỏ qua nhất.


S1. Làm sạch input trước khi đưa vào bất kỳ output nào

Bug report UI thường kèm ảnh chụp màn hình và log. Trước khi trích vào defect_record.md, PR body, hay commit message, phải loại bỏ:

Loại Ví dụ hay lọt trong app này Xử lý
API key / token sk-..., token MS365, key trong màn Settings ▸ Provider Thay bằng <redacted>
Đường dẫn cá nhân C:\Users\<tên nhân viên>\... Rút gọn thành %USERPROFILE%\...
Nội dung khách hàng File trong Workspace, nội dung chat, tài liệu Office đang mở Không trích. Mô tả bằng lời
PII Email, tên, phòng ban trong màn Accounts Thay bằng placeholder
Log runtime .cowork_local/ audit log, MCP call history Chỉ trích đúng dòng liên quan, đã redact

Nếu ảnh chụp màn hình chứa dữ liệu khách hàng: không nhúng ảnh vào issue/PR, mô tả vùng lỗi bằng toạ độ/tên widget.

S2. Không đọc/ghi secret khi debug UI

  • Không in SecretStore/keyring ra log để "kiểm tra".
  • Không thêm print()/logger.debug() tạm vào đường đi của credential rồi quên gỡ.
  • Không commit .env, config.json local, hay bất cứ thứ gì dưới %USERPROFILE%\.cowork_local\.

S3. Bug UI vẫn có thể là bug bảo mật

Đánh dấu security-review: required nếu bản sửa chạm tới:

  • màn hình/hộp thoại Permission (ui/permission_dialog.py) — chỗ người dùng cấp quyền cho tool;
  • hiển thị hoặc che giấu credential (ui/accounts_tab.py, ui/login_dialog.py, presentation/settings/provider_settings_widget.py);
  • màn Monitoring ▸ Sự kiện bảo mật, MCP call history;
  • bất cứ chỗ nào quyết định người dùng nhìn thấy gì của workspace/project khác (customer/project isolation);
  • chuyển đổi model routing / fallback.

Với nhóm này: CI xanh không đủ để merge (docs/governance/review-policy.md).

S4. Lỗi UI có hệ quả bảo mật — nhận diện sớm

Không xem nhẹ mấy triệu chứng sau, chúng là bug bảo mật đội lốt bug UI:

  • Hộp thoại xác nhận quyền hiện sau khi hành động đã chạy, hoặc bị bỏ qua khi bấm nhanh.
  • Nút "Cho phép" là default button / nhận Enter — người dùng cấp quyền mà không đọc.
  • Ô mật khẩu không QLineEdit.Password, hoặc key hiện dạng plaintext khi resize/copy.
  • Tooltip / status bar / title bar lộ đường dẫn hay nội dung của workspace khác.
  • Toast lỗi in nguyên exception kèm request body.

S5. Không rewrite history

Nếu phát hiện secret đã nằm trong Git history: dừng lại, báo Cowork Team. Không force-push, không tự sửa history (SECURITY.md).