Files
cowork-local/agent/system/security.md
T
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

58 lines
3.1 KiB
Markdown

# 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`).