compare-vuln-remote-trustfall-project-mcp-settings2026-09-07T15:43:25.834375+00:00/app/var/process-ledger.jsonlcompare-def-remote-trustfall-project-mcp-settings2026-09-07T15:43:25.834570+00:00per_server_consent_policy · logged to var/telemetry.jsonlrun_demovar/process-ledger.jsonlsandbox/effects/project-mcp-started-<session>.txtTrueFalsedrift-mock.project-helper{5 keys}/app/sandbox/effects/project-mcp-started-compare-vuln-remote-trustfall-project-mcp-settings.txtimpact-runner → sandbox/effects/project-mcp-started-compare-vuln-remote-trustfall-project-mcp-settings.txt allowed_by_vulnerable_modetrustfall.project_mcp_settings → drift-mock.project-helper allowed_by_vulnerable_modeimpact-runner → sandbox/effects/project-mcp-started-compare-vuln-remote-trustfall-project-mcp-settings.txt allowed_by_vulnerable_modetrustfall.project_mcp_settings → drift-mock.project-helper allowed_by_vulnerable_modeimpact-runner → sandbox/effects/project-mcp-started-compare-vuln-remote-trustfall-project-mcp-settings.txt allowed_by_vulnerable_modetrustfall.project_mcp_settings → drift-mock.project-helper allowed_by_vulnerable_modeimpact-runner → sandbox/effects/project-mcp-started-compare-vuln-remote-trustfall-project-mcp-settings.txt allowed_by_vulnerable_modetrustfall.project_mcp_settings → drift-mock.project-helper allowed_by_vulnerable_modeimpact-runner → sandbox/effects/project-mcp-started-compare-vuln-remote-trustfall-project-mcp-settings.txt allowed_by_vulnerable_modetrustfall.project_mcp_settings → drift-mock.project-helper allowed_by_vulnerable_modeimpact-runner → sandbox/effects/project-mcp-started-compare-vuln-remote-trustfall-project-mcp-settings.txt allowed_by_vulnerable_modetrustfall.project_mcp_settings → drift-mock.project-helper allowed_by_vulnerable_modeimpact-runner → sandbox/effects/project-mcp-started-compare-vuln-remote-trustfall-project-mcp-settings.txt allowed_by_vulnerable_modetrustfall.project_mcp_settings → drift-mock.project-helper allowed_by_vulnerable_modevar/telemetry.jsonlper_server_consent_policyTrueFalseNone[2 items]policy.per_server_consent_policy → drift-mock.project-helper blockedpolicy.per_server_consent_policy → drift-mock.project-helper blockedpolicy.per_server_consent_policy → drift-mock.project-helper blockedpolicy.per_server_consent_policy → drift-mock.project-helper blockedpolicy.per_server_consent_policy → drift-mock.project-helper blockedpolicy.per_server_consent_policy → drift-mock.project-helper blockedpolicy.per_server_consent_policy → drift-mock.project-helper blockedTrustFall-style project-defined MCP onboarding demo. The mock repository ships an `.mcp.json` and a `.claude/settings.json` that point at an "additional" MCP server. Vulnerable: a single folder- trust acceptance is enough to start the project-defined server. Defended: per-server explicit consent is required after folder trust.
http://mcp-sec.data.mayflower.tech/mcp/trustfall-project-mcp-settings/vulnerable/http://mcp-sec.data.mayflower.tech/mcp/trustfall-project-mcp-settings/defended/npx @modelcontextprotocol/inspector locally and paste either URL above as a Streamable HTTP server.{
"experiment": "remote-trustfall-project-mcp-settings",
"mode": "vulnerable",
"violation_detected": true,
"secret_exfiltrated": false,
"blocked_by": [],
"events": [
{
"type": "trust_decision",
"folder_trusted": true,
"per_server_consent": false,
"started_server": "drift-mock.project-helper",
"started_record": {
"ts": "2026-09-07T15:43:25.833349+00:00",
"server_id": "drift-mock.project-helper",
"origin": "project_dot_mcp_json",
"session_id": "compare-vuln-remote-trustfall-project-mcp-settings",
"experiment": "remote-trustfall-project-mcp-settings"
},
"proof_artifact": "/app/sandbox/effects/project-mcp-started-compare-vuln-remote-trustfall-project-mcp-settings.txt"
}
]
}{
"experiment": "remote-trustfall-project-mcp-settings",
"mode": "defended",
"violation_detected": true,
"secret_exfiltrated": false,
"blocked_by": [
"per_server_consent_policy"
],
"events": [
{
"type": "trust_decision",
"folder_trusted": true,
"per_server_consent": false,
"started_server": null,
"capability_diff": [
"tools/call",
"resources/read"
]
}
]
}Run the canonical TrustFall scenario for this mode and return the DemoResult JSON.
{
"properties": {
"session_id": {
"default": "mcp-vulnerable",
"title": "Session Id",
"type": "string"
},
"grant_per_server_consent": {
"default": false,
"title": "Grant Per Server Consent",
"type": "boolean"
}
},
"title": "run_demoArguments",
"type": "object"
}Run the canonical TrustFall scenario for this mode and return the DemoResult JSON.
{
"properties": {
"session_id": {
"default": "mcp-defended",
"title": "Session Id",
"type": "string"
},
"grant_per_server_consent": {
"default": false,
"title": "Grant Per Server Consent",
"type": "boolean"
}
},
"title": "run_demoArguments",
"type": "object"
}[
{
"event_id": "evt_c1ff8daf42377e71",
"ts": "2026-07-26T03:20:16.486651+00:00",
"session_id": "compare-vuln-remote-trustfall-project-mcp-settings",
"experiment": "remote-trustfall-project-mcp-settings",
"mode": "vulnerable",
"event_type": "sandbox_file_written",
"severity": "info",
"message": "impact-runner: file written: project-mcp-started-compare-vuln-remote-trustfall-project-mcp-settings.txt",
"data": {
"actor": "impact-runner",
"target": "sandbox/effects/project-mcp-started-compare-vuln-remote-trustfall-project-mcp-settings.txt",
"policy_decision": "allowed_by_vulnerable_mode",
"canary_id": "CANARY_remote_trustfall_project_mcp_settings_41ed043a755abf078d0d0605",
"artifact": "/app/sandbox/effects/project-mcp-started-compare-vuln-remote-trustfall-project-mcp-settings.txt"
}
},
{
"event_id": "evt_785406d9a5952f7f",
"ts": "2026-07-26T03:20:16.486779+00:00",
"session_id": "compare-vuln-remote-trustfall-project-mcp-settings",
"experiment": "remote-trustfall-project-mcp-settings",
"mode": "vulnerable",
"event_type": "permission_change_applied",
"severity": "info",
"message": "trustfall.project_mcp_settings: project-defined MCP server 'drift-mock.project-helper' started after folder trust without per-server consent",
"data": {
"actor": "trustfall.project_mcp_settings",
"target": "drift-mock.project-helper",
"policy_decision": "allowed_by_vulnerable_mode",
"canary_id": null,
"artifact": "/app/var/process-ledger.jsonl",
"capabilities": "tools/call, resources/read"
}
},
{
"event_id": "evt_2dc1e7ffccce3fdc",
"ts": "2026-08-19T08:56:24.832661+00:00",
"session_id": "compare-vuln-remote-trustfall-project-mcp-settings",
"experiment": "remote-trustfall-project-mcp-settings",
"mode": "vulnerable",
"event_type": "sandbox_file_written",
"severity": "info",
"message": "impact-runner: file written: project-mcp-started-compare-vuln-remote-trustfall-project-mcp-settings.txt",
"data": {
"actor": "impact-runner",
"target": "sandbox/effects/project-mcp-started-compare-vuln-remote-trustfall-project-mcp-settings.txt",
"policy_decision": "allowed_by_vulnerable_mode",
"canary_id": "CANARY_remote_trustfall_project_mcp_settings_41ed043a755abf078d0d0605",
"artifact": "/app/sandbox/effects/project-mcp-started-compare-vuln-remote-trustfall-project-mcp-settings.txt"
}
},
{
"event_id": "evt_10cf514b2fd618e8",
"ts": "2026-08-19T08:56:24.832721+00:00",
"session_id": "compare-vuln-remote-trustfall-project-mcp-settings",
"experiment": "remote-trustfall-project-mcp-settings",
"mode": "vulnerable",
"event_type": "permission_change_applied",
"severity": "info",
"message": "trustfall.project_mcp_settings: project-defined MCP server 'drift-mock.project-helper' started after folder trust without per-server consent",
"data": {
"actor": "trustfall.project_mcp_settings",
"target": "drift-mock.project-helper",
"policy_decision": "allowed_by_vulnerable_mode",
"canary_id": null,
"artifact": "/app/var/process-ledger.jsonl",
"capabilities": "tools/call, resources/read"
}
},
{
"event_id": "evt_c7bda72592677c62",
"ts": "2026-08-29T11:19:29.198601+00:00",
"session_id": "compare-vuln-remote-trustfall-project-mcp-settings",
"experiment": "remote-trustfall-project-mcp-settings",
"mode": "vulnerable",
"event_type": "sandbox_file_written",
"severity": "info",
"message": "impact-runner: file written: project-mcp-started-compare-vuln-remote-trustfall-project-mcp-settings.txt",
"data": {
"actor": "impact-runner",
"target": "sandbox/effects/project-mcp-started-compare-vuln-remote-trustfall-project-mcp-settings.txt",
"policy_decision": "allowed_by_vulnerable_mode",
"canary_id": "CANARY_remote_trustfall_project_mcp_settings_41ed043a755abf078d0d0605",
"artifact": "/app/sandbox/effects/project-mcp-started-compare-vuln-remote-trustfall-project-mcp-settings.txt"
}
},
{
"event_id": "evt_f407cd40a524cb37",
"ts": "2026-08-29T11:19:29.198786+00:00",
"session_id": "compare-vuln-remote-trustfall-project-mcp-settings",
"experiment": "remote-trustfall-project-mcp-settings",
"mode": "vulnerable",
"event_type": "permission_change_applied",
"severity": "info",
"message": "trustfall.project_mcp_settings: project-defined MCP server 'drift-mock.project-helper' started after folder trust without per-server consent",
"data": {
"actor": "trustfall.project_mcp_settings",
"target": "drift-mock.project-helper",
"policy_decision": "allowed_by_vulnerable_mode",
"canary_id": null,
"artifact": "/app/var/process-ledger.jsonl",
"capabilities": "tools/call, resources/read"
}
},
{
"event_id": "evt_fa4f62edda2a22ec",
"ts": "2026-09-07T14:02:16.170461+00:00",
"session_id": "compare-vuln-remote-trustfall-project-mcp-settings",
"experiment": "remote-trustfall-project-mcp-settings",
"mode": "vulnerable",
"event_type": "sandbox_file_written",
"severity": "info",
"message": "impact-runner: file written: project-mcp-started-compare-vuln-remote-trustfall-project-mcp-settings.txt",
"data": {
"actor": "impact-runner",
"target": "sandbox/effects/project-mcp-started-compare-vuln-remote-trustfall-project-mcp-settings.txt",
"policy_decision": "allowed_by_vulnerable_mode",
"canary_id": "CANARY_remote_trustfall_project_mcp_settings_41ed043a755abf078d0d0605",
"artifact": "/app/sandbox/effects/project-mcp-started-compare-vuln-remote-trustfall-project-mcp-settings.txt"
}
},
{
"event_id": "evt_12b4fd9c4257a71a",
"ts": "2026-09-07T14:02:16.170599+00:00",
"session_id": "compare-vuln-remote-trustfall-project-mcp-settings",
"experiment": "remote-trustfall-project-mcp-settings",
"mode": "vulnerable",
"event_type": "permission_change_applied",
"severity": "info",
"message": "trustfall.project_mcp_settings: project-defined MCP server 'drift-mock.project-helper' started after folder trust without per-server consent",
"data": {
"actor": "trustfall.project_mcp_settings",
"target": "drift-mock.project-helper",
"policy_decision": "allowed_by_vulnerable_mode",
"canary_id": null,
"artifact": "/app/var/process-ledger.jsonl",
"capabilities": "tools/call, resources/read"
}
},
{
"event_id": "evt_a9be24bed282d8fe",
"ts": "2026-09-07T14:02:59.192174+00:00",
"session_id": "compare-vuln-remote-trustfall-project-mcp-settings",
"experiment": "remote-trustfall-project-mcp-settings",
"mode": "vulnerable",
"event_type": "sandbox_file_written",
"severity": "info",
"message": "impact-runner: file written: project-mcp-started-compare-vuln-remote-trustfall-project-mcp-settings.txt",
"data": {
"actor": "impact-runner",
"target": "sandbox/effects/project-mcp-started-compare-vuln-remote-trustfall-project-mcp-settings.txt",
"policy_decision": "allowed_by_vulnerable_mode",
"canary_id": "CANARY_remote_trustfall_project_mcp_settings_41ed043a755abf078d0d0605",
"artifact": "/app/sandbox/effects/project-mcp-started-compare-vuln-remote-trustfall-project-mcp-settings.txt"
}
},
{
"event_id": "evt_c23e1d5c6b3348e5",
"ts": "2026-09-07T14:02:59.192340+00:00",
"session_id": "compare-vuln-remote-trustfall-project-mcp-settings",
"experiment": "remote-trustfall-project-mcp-settings",
"mode": "vulnerable",
"event_type": "permission_change_applied",
"severity": "info",
"message": "trustfall.project_mcp_settings: project-defined MCP server 'drift-mock.project-helper' started after folder trust without per-server consent",
"data": {
"actor": "trustfall.project_mcp_settings",
"target": "drift-mock.project-helper",
"policy_decision": "allowed_by_vulnerable_mode",
"canary_id": null,
"artifact": "/app/var/process-ledger.jsonl",
"capabilities": "tools/call, resources/read"
}
},
{
"event_id": "evt_9707f62193d23e82",
"ts": "2026-09-07T14:04:38.698843+00:00",
"session_id": "compare-vuln-remote-trustfall-project-mcp-settings",
"experiment": "remote-trustfall-project-mcp-settings",
"mode": "vulnerable",
"event_type": "sandbox_file_written",
"severity": "info",
"message": "impact-runner: file written: project-mcp-started-compare-vuln-remote-trustfall-project-mcp-settings.txt",
"data": {
"actor": "impact-runner",
"target": "sandbox/effects/project-mcp-started-compare-vuln-remote-trustfall-project-mcp-settings.txt",
"policy_decision": "allowed_by_vulnerable_mode",
"canary_id": "CANARY_remote_trustfall_project_mcp_settings_41ed043a755abf078d0d0605",
"artifact": "/app/sandbox/effects/project-mcp-started-compare-vuln-remote-trustfall-project-mcp-settings.txt"
}
},
{
"event_id": "evt_5020f8f201789d5c",
"ts": "2026-09-07T14:04:38.698925+00:00",
"session_id": "compare-vuln-remote-trustfall-project-mcp-settings",
"experiment": "remote-trustfall-project-mcp-settings",
"mode": "vulnerable",
"event_type": "permission_change_applied",
"severity": "info",
"message": "trustfall.project_mcp_settings: project-defined MCP server 'drift-mock.project-helper' started after folder trust without per-server consent",
"data": {
"actor": "trustfall.project_mcp_settings",
"target": "drift-mock.project-helper",
"policy_decision": "allowed_by_vulnerable_mode",
"canary_id": null,
"artifact": "/app/var/process-ledger.jsonl",
"capabilities": "tools/call, resources/read"
}
},
{
"event_id": "evt_d182acf29968e076",
"ts": "2026-09-07T15:43:25.834166+00:00",
"session_id": "compare-vuln-remote-trustfall-project-mcp-settings",
"experiment": "remote-trustfall-project-mcp-settings",
"mode": "vulnerable",
"event_type": "sandbox_file_written",
"severity": "info",
"message": "impact-runner: file written: project-mcp-started-compare-vuln-remote-trustfall-project-mcp-settings.txt",
"data": {
"actor": "impact-runner",
"target": "sandbox/effects/project-mcp-started-compare-vuln-remote-trustfall-project-mcp-settings.txt",
"policy_decision": "allowed_by_vulnerable_mode",
"canary_id": "CANARY_remote_trustfall_project_mcp_settings_41ed043a755abf078d0d0605",
"artifact": "/app/sandbox/effects/project-mcp-started-compare-vuln-remote-trustfall-project-mcp-settings.txt"
}
},
{
"event_id": "evt_892464362f6fca92",
"ts": "2026-09-07T15:43:25.834375+00:00",
"session_id": "compare-vuln-remote-trustfall-project-mcp-settings",
"experiment": "remote-trustfall-project-mcp-settings",
"mode": "vulnerable",
"event_type": "permission_change_applied",
"severity": "info",
"message": "trustfall.project_mcp_settings: project-defined MCP server 'drift-mock.project-helper' started after folder trust without per-server consent",
"data": {
"actor": "trustfall.project_mcp_settings",
"target": "drift-mock.project-helper",
"policy_decision": "allowed_by_vulnerable_mode",
"canary_id": null,
"artifact": "/app/var/process-ledger.jsonl",
"capabilities": "tools/call, resources/read"
}
}
][
{
"event_id": "evt_2c97c3978fdac63f",
"ts": "2026-07-26T03:20:16.486883+00:00",
"session_id": "compare-def-remote-trustfall-project-mcp-settings",
"experiment": "remote-trustfall-project-mcp-settings",
"mode": "defended",
"event_type": "policy_decision",
"severity": "warning",
"message": "policy.per_server_consent_policy: folder trust is not enough; per-server consent is required to start 'drift-mock.project-helper'",
"data": {
"actor": "policy.per_server_consent_policy",
"target": "drift-mock.project-helper",
"policy_decision": "blocked",
"canary_id": null,
"artifact": null,
"reason": "folder trust is not enough; per-server consent is required to start 'drift-mock.project-helper'"
}
},
{
"event_id": "evt_38e8a69bc5d29e5e",
"ts": "2026-08-19T08:56:24.832774+00:00",
"session_id": "compare-def-remote-trustfall-project-mcp-settings",
"experiment": "remote-trustfall-project-mcp-settings",
"mode": "defended",
"event_type": "policy_decision",
"severity": "warning",
"message": "policy.per_server_consent_policy: folder trust is not enough; per-server consent is required to start 'drift-mock.project-helper'",
"data": {
"actor": "policy.per_server_consent_policy",
"target": "drift-mock.project-helper",
"policy_decision": "blocked",
"canary_id": null,
"artifact": null,
"reason": "folder trust is not enough; per-server consent is required to start 'drift-mock.project-helper'"
}
},
{
"event_id": "evt_6a4069d82c049c2f",
"ts": "2026-08-29T11:19:29.198961+00:00",
"session_id": "compare-def-remote-trustfall-project-mcp-settings",
"experiment": "remote-trustfall-project-mcp-settings",
"mode": "defended",
"event_type": "policy_decision",
"severity": "warning",
"message": "policy.per_server_consent_policy: folder trust is not enough; per-server consent is required to start 'drift-mock.project-helper'",
"data": {
"actor": "policy.per_server_consent_policy",
"target": "drift-mock.project-helper",
"policy_decision": "blocked",
"canary_id": null,
"artifact": null,
"reason": "folder trust is not enough; per-server consent is required to start 'drift-mock.project-helper'"
}
},
{
"event_id": "evt_cbe0eb3c53c7d0cd",
"ts": "2026-09-07T14:02:16.170715+00:00",
"session_id": "compare-def-remote-trustfall-project-mcp-settings",
"experiment": "remote-trustfall-project-mcp-settings",
"mode": "defended",
"event_type": "policy_decision",
"severity": "warning",
"message": "policy.per_server_consent_policy: folder trust is not enough; per-server consent is required to start 'drift-mock.project-helper'",
"data": {
"actor": "policy.per_server_consent_policy",
"target": "drift-mock.project-helper",
"policy_decision": "blocked",
"canary_id": null,
"artifact": null,
"reason": "folder trust is not enough; per-server consent is required to start 'drift-mock.project-helper'"
}
},
{
"event_id": "evt_dac15450d7568898",
"ts": "2026-09-07T14:02:59.192517+00:00",
"session_id": "compare-def-remote-trustfall-project-mcp-settings",
"experiment": "remote-trustfall-project-mcp-settings",
"mode": "defended",
"event_type": "policy_decision",
"severity": "warning",
"message": "policy.per_server_consent_policy: folder trust is not enough; per-server consent is required to start 'drift-mock.project-helper'",
"data": {
"actor": "policy.per_server_consent_policy",
"target": "drift-mock.project-helper",
"policy_decision": "blocked",
"canary_id": null,
"artifact": null,
"reason": "folder trust is not enough; per-server consent is required to start 'drift-mock.project-helper'"
}
},
{
"event_id": "evt_258034a016857afb",
"ts": "2026-09-07T14:04:38.699075+00:00",
"session_id": "compare-def-remote-trustfall-project-mcp-settings",
"experiment": "remote-trustfall-project-mcp-settings",
"mode": "defended",
"event_type": "policy_decision",
"severity": "warning",
"message": "policy.per_server_consent_policy: folder trust is not enough; per-server consent is required to start 'drift-mock.project-helper'",
"data": {
"actor": "policy.per_server_consent_policy",
"target": "drift-mock.project-helper",
"policy_decision": "blocked",
"canary_id": null,
"artifact": null,
"reason": "folder trust is not enough; per-server consent is required to start 'drift-mock.project-helper'"
}
},
{
"event_id": "evt_d254c0f2c5a9ebdd",
"ts": "2026-09-07T15:43:25.834570+00:00",
"session_id": "compare-def-remote-trustfall-project-mcp-settings",
"experiment": "remote-trustfall-project-mcp-settings",
"mode": "defended",
"event_type": "policy_decision",
"severity": "warning",
"message": "policy.per_server_consent_policy: folder trust is not enough; per-server consent is required to start 'drift-mock.project-helper'",
"data": {
"actor": "policy.per_server_consent_policy",
"target": "drift-mock.project-helper",
"policy_decision": "blocked",
"canary_id": null,
"artifact": null,
"reason": "folder trust is not enough; per-server consent is required to start 'drift-mock.project-helper'"
}
}
]