T01 · Skill Instruction Hijacking
- Location
scripts/runtime/server-core.mjs:58- Finding
Untrusted trip data is interpolated into an executable agent prompt
- Content
View full analysis
`${slice.origin.code}-${slice.destination.code}`) .join(', ') : 'unknown route'; const discrepancyLines = discrepancies.length ? discrepancies .slice(0, 5) .map((item) => `- [${item.severity}] ${item.field}: ${item.message}`) .join('\n') : '- No discrepancies reported.'; const truthLines = truthRows.length ? truthRows .slice(0, 6) .map((item) => `- ${item.concern}: ${item.value} (${item.scope})`) .join('\n') : '- No traveler truth-table rows returned.'; return { routeSummary, discrepancyLines, truthLines }; } ``` ```js server.registerPrompt( 'traveler-safe-audit-brief', { title: 'Traveler-safe audit brief', description: 'Create a grounded audit summary for an existing Matrix Mate trip.', argsSchema: TravelerSafeAuditPromptArgsSchema, }, async ({ tripId, focus }) => { const result = await client.getTrip(tripId); if (!result.ok || !result.payload) { return { description: `Trip ${tripId} could not be loaded`, messages: [createPromptMessage(`Trip ${tripId} could not be loaded from the local Matrix Mate app. Ask the user to retry after checking the trip id and local app health.`)], }; } const facts = buildAuditFacts(result.payload); return { description: `Travel ...[truncated 2588 chars]- Remediation
View remediation
