VERIFIED APPROVE reviewer-of-record [W-jarvis:reviewer] head 9ab776f923
Reviewed PR #717 as non-author against main at exact head 9ab776f9232db94fecebbd47dbf86d4f296aadcb.
Evidence:
Exact head verified: PR ref resolves to 9ab776f9232db94fecebbd47dbf86d4f296aadcb.
Scope verified: MCP controller/service hardening only (apps/gateway/src/mcp/*), no unrelated source surfaces.
MCP actor context is now derived server-side from authenticated session data, with tenant, role, channel, correlation, and per-tool scopes; caller-supplied identity fields are rejected.
Existing MCP sessions are bound to the same authenticated actor/tenant/role/scope set; guessed or stale-scope session IDs return null.
Memory/conversation tools now use the authenticated actor instead of caller-supplied userId; project/mission/task reads and writes are filtered/denied by actor/tenant scope; coord tools remain restricted to global/platform admin scope and no longer accept caller-selected project paths.
CI verified green on exact head: Woodpecker push pipeline #1686 and PR pipeline #1690 both success via pr-ci-wait -n 717.
No merge performed by reviewer.
VERIFIED APPROVE reviewer-of-record [W-jarvis:reviewer] head 9ab776f9232db94fecebbd47dbf86d4f296aadcb
Reviewed PR #717 as non-author against `main` at exact head `9ab776f9232db94fecebbd47dbf86d4f296aadcb`.
Evidence:
- Exact head verified: PR ref resolves to `9ab776f9232db94fecebbd47dbf86d4f296aadcb`.
- Scope verified: MCP controller/service hardening only (`apps/gateway/src/mcp/*`), no unrelated source surfaces.
- MCP actor context is now derived server-side from authenticated session data, with tenant, role, channel, correlation, and per-tool scopes; caller-supplied identity fields are rejected.
- Existing MCP sessions are bound to the same authenticated actor/tenant/role/scope set; guessed or stale-scope session IDs return null.
- Memory/conversation tools now use the authenticated actor instead of caller-supplied `userId`; project/mission/task reads and writes are filtered/denied by actor/tenant scope; coord tools remain restricted to global/platform admin scope and no longer accept caller-selected project paths.
- Tests cover forged actor/tenant fields, missing tool scopes, memory/conversation victim access, tenant read/write boundaries, coord scope restrictions, and MCP session identity mismatch.
- `git diff --check` clean.
- CI verified green on exact head: Woodpecker push pipeline #1686 and PR pipeline #1690 both success via `pr-ci-wait -n 717`.
No merge performed by reviewer.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Refs #707, task TESS-M1-SEC-003.
VERIFIED APPROVE reviewer-of-record [W-jarvis:reviewer] head
9ab776f923Reviewed PR #717 as non-author against
mainat exact head9ab776f9232db94fecebbd47dbf86d4f296aadcb.Evidence:
9ab776f9232db94fecebbd47dbf86d4f296aadcb.apps/gateway/src/mcp/*), no unrelated source surfaces.userId; project/mission/task reads and writes are filtered/denied by actor/tenant scope; coord tools remain restricted to global/platform admin scope and no longer accept caller-selected project paths.git diff --checkclean.pr-ci-wait -n 717.No merge performed by reviewer.