Summary
Add output FERPA discipline (never display student names in conversation) and automated name leak scanner to prevent FERPA violations in AI agent conversations.
Background
Incident: 2026-07-28 FERPA violation in ds460-master grading conversation
RCA: ds460-master/grading/RCA_2026-07-28_FERPA_name_disclosure.md
Current FERPA discipline (canvas-toolbox/AGENTS.md) prevents reading .deid_master.csv for name lookup (input discipline), but doesn't prevent displaying names read from other files (output discipline).
Impact: Student names were displayed in conversation responses alongside grades, exposing FERPA Zone 2 data in LLM context and cloud conversation history.
Root Cause
Input/Output Asymmetry:
- Input discipline: "Don't read .deid_master.csv to look up names"
- Output discipline: MISSING — no rule preventing name display in conversation
AI agent read working grading files (_computed_grades.csv, _gradebook_canvas.csv) containing names, then included names in formatted responses without filtering.
Proposed Solutions
1. Output FERPA Principle (Documentation)
Add to canvas-toolbox AGENTS.md FERPA section:
Output discipline — NEVER display names in conversation:
Regardless of what files you read, NEVER include student names in conversational responses. Always use de-identified codes (user_id or deid_code) when referring to students.
Examples:
- CORRECT: "User 806485 received an A (95) as a compassion adjustment"
- CORRECT: "FR-B75C87 completed 2 KCs and 3 WCs, earning a B+ elevated to A"
- VIOLATION: "Esther Scott (806485) received an A"
- VIOLATION: "Student 806485 (Esther Scott, FR-B75C87) ..."
Why: Conversation logs are cloud surfaces. Names must never enter LLM context or conversation history.
2. Zone 2-Adjacent File Classification (Documentation)
Expand FERPA file list to clarify "never read" vs "read but don't display":
FERPA Zone 2 (NEVER READ):
grading/.deid_master.csv
grading/.known_names.txt
grading/*/.keymap.json
grading/**/.fetch_log.json
grading/*/.review.csv
grading/*/feedback/_grader*.csv
grading/**/submissions_raw/**
FERPA Zone 2-Adjacent (CAN READ, NEVER DISPLAY NAMES):
grading/*/_computed_grades.csv
grading/*/_gradebook_canvas.csv
grading/*/FINAL_REVIEW_COMMENTS_*.md
grading/*/_actual_grades.csv
3. Automated Name Leak Scanner (Code Enhancement)
Add pre-output scanner to catch name leaks before conversation display.
Integration options:
- Claude Code pre-output hook (if supported)
- Post-hoc conversation audit script
- Pre-commit hook to scan agent session logs
4. FERPA-Clean Response Templates (Documentation)
Add templates for common grading queries to show proper FERPA-clean formatting.
Implementation Plan
Phase 1 (Immediate):
Phase 2 (This Week):
Phase 3 (Medium-Term):
Success Metrics
- Zero name leaks in conversation after implementation
- 100% FERPA-clean responses (user_id/deid_code only)
- Automated scanner catches violations before display
- Clear output discipline in documentation
Related
- Previous FERPA incident: 2026-07-01 (read .deid_master during accommodation)
- Previous FERPA incident: 2026-07-02 (displayed head -5 .deid_master)
- HG-5 incident: 2026-07-17 (KC3 grading protocol violation) — RCA in ds460-master
Summary
Add output FERPA discipline (never display student names in conversation) and automated name leak scanner to prevent FERPA violations in AI agent conversations.
Background
Incident: 2026-07-28 FERPA violation in ds460-master grading conversation
RCA:
ds460-master/grading/RCA_2026-07-28_FERPA_name_disclosure.mdCurrent FERPA discipline (canvas-toolbox/AGENTS.md) prevents reading
.deid_master.csvfor name lookup (input discipline), but doesn't prevent displaying names read from other files (output discipline).Impact: Student names were displayed in conversation responses alongside grades, exposing FERPA Zone 2 data in LLM context and cloud conversation history.
Root Cause
Input/Output Asymmetry:
AI agent read working grading files (
_computed_grades.csv,_gradebook_canvas.csv) containing names, then included names in formatted responses without filtering.Proposed Solutions
1. Output FERPA Principle (Documentation)
Add to canvas-toolbox AGENTS.md FERPA section:
Output discipline — NEVER display names in conversation:
Regardless of what files you read, NEVER include student names in conversational responses. Always use de-identified codes (user_id or deid_code) when referring to students.
Examples:
Why: Conversation logs are cloud surfaces. Names must never enter LLM context or conversation history.
2. Zone 2-Adjacent File Classification (Documentation)
Expand FERPA file list to clarify "never read" vs "read but don't display":
FERPA Zone 2 (NEVER READ):
grading/.deid_master.csvgrading/.known_names.txtgrading/*/.keymap.jsongrading/**/.fetch_log.jsongrading/*/.review.csvgrading/*/feedback/_grader*.csvgrading/**/submissions_raw/**FERPA Zone 2-Adjacent (CAN READ, NEVER DISPLAY NAMES):
grading/*/_computed_grades.csvgrading/*/_gradebook_canvas.csvgrading/*/FINAL_REVIEW_COMMENTS_*.mdgrading/*/_actual_grades.csv3. Automated Name Leak Scanner (Code Enhancement)
Add pre-output scanner to catch name leaks before conversation display.
Integration options:
4. FERPA-Clean Response Templates (Documentation)
Add templates for common grading queries to show proper FERPA-clean formatting.
Implementation Plan
Phase 1 (Immediate):
Phase 2 (This Week):
Phase 3 (Medium-Term):
Success Metrics
Related