{"$schema": "https://raw.githubusercontent.com/guitaripod/wwdc-sessions/master/schema/transcript.schema.json", "id": "wwdc2026-379", "language": "eng", "source": "https://developer.apple.com/videos/play/wwdc2026/379", "wordCount": 1560, "segments": [{"start": 7.0, "text": "Hi, I'm Mike Armstrong, Engineering Manager at Apple."}, {"start": 11.0, "text": "In this video, you'll learn how to use Trust Insights to detect"}, {"start": 15.0, "text": "and respond to social engineering threats in your app."}, {"start": 19.0, "text": "Social scams are a growing challenge."}, {"start": 22.0, "text": "Attacks that target people not systems."}, {"start": 26.0, "text": "Social engineering exploits human psychology"}, {"start": 29.0, "text": "rather than technical vulnerabilities."}, {"start": 32.0, "text": "Your users may be pressured, frightened,"}, {"start": 35.0, "text": "or deceived into performing legitimate actions."}, {"start": 38.0, "text": "And your app can't tell the difference between a genuine and coerced intent."}, {"start": 45.0, "text": "Across the industry and from partner feedback,"}, {"start": 49.0, "text": "several recurring coercion patterns stand out."}, {"start": 52.0, "text": "Tech support scams, where fake alerts prompt remote access,"}, {"start": 57.0, "text": "deceiving the user into handing over control."}, {"start": 61.0, "text": "Authority impersonation, posing as banks, government agencies,"}, {"start": 65.0, "text": "or law enforcement to collect sensitive information."}, {"start": 70.0, "text": "And family emergency fraud,"}, {"start": 72.0, "text": "with urgent requests for money that exploit emotional bonds"}, {"start": 76.0, "text": "increasingly using AI-generated deepfakes."}, {"start": 80.0, "text": "Real-time coaching makes detection especially difficult."}, {"start": 85.0, "text": "Attackers guide victims through actions via voice calls, chat, or messaging."}, {"start": 91.0, "text": "The user then performs the actions themselves"}, {"start": 94.0, "text": "authenticated and legitimately."}, {"start": 97.0, "text": "Existing protections like multi-factor-authentication and biometrics"}, {"start": 102.0, "text": "don't help in this scenario, because the user is the one acting."}, {"start": 108.0, "text": "A new kind of signal is needed."}, {"start": 111.0, "text": "Authentication confirms who, but not whether they're acting freely."}, {"start": 117.0, "text": "Behavioral context can help distinguish genuine intent from a coerced action."}, {"start": 124.0, "text": "Critically, this signal must preserve privacy while still protecting users."}, {"start": 131.0, "text": "Trust Insights, a framework introduced in iOS 27,"}, {"start": 134.0, "text": "provides a new approach to help your app understand this behavioral context."}, {"start": 140.0, "text": "I'll take you through how to integrate Trust Insights into your app,"}, {"start": 144.0, "text": "cover the requirements for using the API,"}, {"start": 147.0, "text": "explain its privacy architecture,"}, {"start": 150.0, "text": "and wrap up with an example of how your app could respond to a trust signal."}, {"start": 155.0, "text": "Starting with generating insights."}, {"start": 158.0, "text": "Trust Insights is a framework that combines device and cloud infrastructure,"}, {"start": 163.0, "text": "but your integration is entirely client-side, using a Swift API."}, {"start": 169.0, "text": "The first step is configuration."}, {"start": 172.0, "text": "Generating Trust Insights requires an entitlement."}, {"start": 175.0, "text": "Configure this in Xcode by declaring the capability on your app target."}, {"start": 182.0, "text": "After importing Trust Insights,"}, {"start": 184.0, "text": "the next step is to create a parameter pack containing the insights to request."}, {"start": 190.0, "text": "A schema is required, but modelVersion is optional."}, {"start": 195.0, "text": "Specifying both a current and prior version of the same insight"}, {"start": 199.0, "text": "can support model governance and validation."}, {"start": 204.0, "text": "The InsightEvaluator accepts multiple insights."}, {"start": 208.0, "text": "In its context, specify the operationCategory"}, {"start": 212.0, "text": "and the evaluations."}, {"start": 214.0, "text": "The operation category tells the system what kind of action the user is performing"}, {"start": 219.0, "text": "and determines which model logic is applied."}, {"start": 224.0, "text": "Five categories are available."}, {"start": 227.0, "text": "payment: any exchange of assets, content, or money, including in-game purchases."}, {"start": 236.0, "text": "account: updating account details or security information."}, {"start": 242.0, "text": "resourceUse: requests to costly or constrained infrastructure,"}, {"start": 246.0, "text": "such as AI inference."}, {"start": 250.0, "text": "communication: sending messages, submitting forms, or signing documents."}, {"start": 255.0, "text": "And other: a fallback for operations that don't fit the above."}, {"start": 260.0, "text": "If your use case lands here, please file feedback through Feedback Assistant."}, {"start": 266.0, "text": "Next create your InsightEvaluator, passing in your InsightContext."}, {"start": 271.0, "text": "As your user has full control over the usage of Trust Insights,"}, {"start": 276.0, "text": "you should check if your app is authorized."}, {"start": 278.0, "text": "If not, you may want to notify the user."}, {"start": 283.0, "text": "You're ready to go."}, {"start": 284.0, "text": "Asynchronously call requestEvaluation."}, {"start": 288.0, "text": "Take note."}, {"start": 289.0, "text": "This can take a couple of seconds to provide a result"}, {"start": 292.0, "text": "and requires Internet reachability."}, {"start": 295.0, "text": "It's important to consider where in your user experience"}, {"start": 298.0, "text": "or flow you have this code."}, {"start": 300.0, "text": "You may want to take advantage of existing animations"}, {"start": 303.0, "text": "or interstitial screens at the right moment."}, {"start": 307.0, "text": "When in development, your requests will hit a sandbox environment."}, {"start": 312.0, "text": "Once distributed on the App Store"}, {"start": 314.0, "text": "your requests will be evaluated by production models and servers."}, {"start": 318.0, "text": "To test decision logic and UX variations,"}, {"start": 321.0, "text": "you can override insight values and errors"}, {"start": 324.0, "text": "by customizing the build schemes for a project in Xcode."}, {"start": 328.0, "text": "For more information about which launch arguments are available,"}, {"start": 332.0, "text": "check the developer documentation for Trust Insights."}, {"start": 337.0, "text": "The response contains one result per InsightEvaluation requested."}, {"start": 342.0, "text": "For IsLikelyBeingCoachedInsight, there are three possible values:"}, {"start": 347.0, "text": "unknown: the system has no evidence of scam risk,"}, {"start": 352.0, "text": "but this should not be interpreted as low risk."}, {"start": 356.0, "text": "medium: some evidence of coaching risk."}, {"start": 359.0, "text": "Depending on the use case, consider introducing friction,"}, {"start": 363.0, "text": "additional verification, or adjusting risk scoring."}, {"start": 368.0, "text": "high: significant evidence of coaching risk."}, {"start": 372.0, "text": "The user should be informed of the determined risks before proceeding."}, {"start": 377.0, "text": "You should handle both evaluation-level and insight-level errors independently."}, {"start": 383.0, "text": "Details are in the developer documentation."}, {"start": 386.0, "text": "Behind those three values is a sophisticated ML model."}, {"start": 391.0, "text": "Device-sourced data is processed locally."}, {"start": 395.0, "text": "Inputs are immediately discarded after evaluation,"}, {"start": 399.0, "text": "with only a single output value leaving a user's device."}, {"start": 403.0, "text": "The final output may incorporate Apple Account signals"}, {"start": 407.0, "text": "and velocity checks for additional context."}, {"start": 410.0, "text": "Two types of feedback complete the integration:"}, {"start": 414.0, "text": "real-time consumption feedback,"}, {"start": 416.0, "text": "which reports how your app responded to an insight"}, {"start": 419.0, "text": "and offline feedback,"}, {"start": 421.0, "text": "for cases where a transaction later turned out to be fraudulent."}, {"start": 425.0, "text": "To submit real-time feedback,"}, {"start": 427.0, "text": "call reportConsumption on the evaluation result."}, {"start": 431.0, "text": "This call is mandatory for each insight evaluation request."}, {"start": 436.0, "text": "If omitted, your app may be rate-limited."}, {"start": 441.0, "text": "Six consumption values are available:"}, {"start": 444.0, "text": "usedReducedFriction"}, {"start": 446.0, "text": "the insight contributed to making the operation easier."}, {"start": 451.0, "text": "usedUnchangedFriction"}, {"start": 453.0, "text": "the insight was evaluated but didn't change the experience."}, {"start": 458.0, "text": "usedIncreasedFriction"}, {"start": 460.0, "text": "the insight led to additional checks or friction,"}, {"start": 463.0, "text": "though outright blocking based solely on a trust insight is not recommended."}, {"start": 470.0, "text": "notUsedNotNeeded"}, {"start": 473.0, "text": "the user cancelled, so no decision was required."}, {"start": 478.0, "text": "notUsedError"}, {"start": 480.0, "text": "a technical failure prevented use, such as the result arriving too late."}, {"start": 486.0, "text": "usedEvaluationOnly"}, {"start": 489.0, "text": "the insight was used for example in internal evaluations and benchmarking,"}, {"start": 493.0, "text": "without affecting the user experience."}, {"start": 498.0, "text": "Offline labels are vital for model improvement."}, {"start": 502.0, "text": "When a trust insight evaluation ultimately results in confirmed fraud,"}, {"start": 506.0, "text": "that signal helps the model understand its real-world performance."}, {"start": 512.0, "text": "These reports may come days, weeks, or months later."}, {"start": 517.0, "text": "Submit them through Apple Business Register"}, {"start": 520.0, "text": "using a server-to-server API"}, {"start": 522.0, "text": "with a defined schema that includes the insight identifier"}, {"start": 526.0, "text": "from the original evaluation."}, {"start": 530.0, "text": "Don't include any surplus information such as PII in your submission"}, {"start": 535.0, "text": "and apply privacy preserving techniques"}, {"start": 538.0, "text": "against any remaining values that could be used for fingerprinting."}, {"start": 544.0, "text": "Offline label submission is not required to benefit from Trust Insights,"}, {"start": 548.0, "text": "but it strengthens the ecosystem for everyone."}, {"start": 552.0, "text": "More details are available in the developer documentation."}, {"start": 556.0, "text": "That covers the full integration:"}, {"start": 559.0, "text": "configuration, evaluation,"}, {"start": 561.0, "text": "results and feedback."}, {"start": 564.0, "text": "Next: privacy."}, {"start": 567.0, "text": "Data minimization is central to how Trust Insights works."}, {"start": 571.0, "text": "The framework processes only what's needed,"}, {"start": 575.0, "text": "discards inputs immediately, and keeps all device-sourced data on the device."}, {"start": 582.0, "text": "Privacy is foundational to every Apple product and service."}, {"start": 586.0, "text": "It's considered from the start, throughout development,"}, {"start": 590.0, "text": "and continuously as each service operates."}, {"start": 594.0, "text": "Trust Insights analyzes interaction patterns,"}, {"start": 598.0, "text": "timing, context, and basic sensor data."}, {"start": 602.0, "text": "Never content within Photos, Messages, or Mail."}, {"start": 607.0, "text": "None of these device-derived signals are shared with Apple or third parties."}, {"start": 613.0, "text": "Users have full control and can disable Trust Insights within Settings."}, {"start": 619.0, "text": "A cooldown period may apply after disabling,"}, {"start": 622.0, "text": "to protect users who may have themselves been coached into turning it off."}, {"start": 628.0, "text": "You should query authorization status"}, {"start": 630.0, "text": "to check whether the user has Trust Insights enabled for your app."}, {"start": 634.0, "text": "Trust Insights has been in use within Apple's own services,"}, {"start": 638.0, "text": "and there are practical recommendations to share."}, {"start": 641.0, "text": "Here's an example."}, {"start": 643.0, "text": "A user is setting up a large money transfer"}, {"start": 645.0, "text": "to someone claiming to be a doctor treating a family member."}, {"start": 649.0, "text": "Behind the scenes, the app has requested a trust insight."}, {"start": 655.0, "text": "The .medium result prompts the app to adjust its flow."}, {"start": 658.0, "text": "In this case, displaying a warning and adding a delay to the transaction."}, {"start": 663.0, "text": "Depending on your use case, you may instead handle the result server-side,"}, {"start": 668.0, "text": "add a manual review step, or adjust for risk without disrupting the user."}, {"start": 674.0, "text": "The right approach depends on your app, your users, and your product."}, {"start": 680.0, "text": "Choosing when to call Trust Insights is just as important as how."}, {"start": 686.0, "text": "Consider the moments where it adds the most value."}, {"start": 690.0, "text": "High-value financial transactions, such as peer-to-peer payments."}, {"start": 695.0, "text": "Irreversible actions, like account deletion or personal data export."}, {"start": 701.0, "text": "Permission grants, such as remote access or new device authorization."}, {"start": 706.0, "text": "And sensitive data sharing, like credentials or personal documents."}, {"start": 712.0, "text": "Beyond identifying critical moments,"}, {"start": 714.0, "text": "there are other best practices to consider:"}, {"start": 718.0, "text": "Integrate Trust Insights into your existing risk and decision logic."}, {"start": 722.0, "text": "It should not be the sole factor or determinant in any decision."}, {"start": 728.0, "text": "Utilize the ability to sample different model versions over time"}, {"start": 732.0, "text": "to understand how newer models impact your decisioning logic"}, {"start": 735.0, "text": "before taking action."}, {"start": 737.0, "text": "Handle errors at every level, as evaluation errors"}, {"start": 741.0, "text": "and insight errors carry different meaning."}, {"start": 744.0, "text": "Never treat unknown or a missing value as low risk."}, {"start": 750.0, "text": "Your feedback helps to enrich the ecosystem"}, {"start": 753.0, "text": "and protect everyone from being the victims of coercion."}, {"start": 757.0, "text": "To avoid rate limits"}, {"start": 758.0, "text": "you must submit real-time insight feedback directly in your app"}, {"start": 762.0, "text": "and if possible, contribute offline fraud labels via Apple Business Register."}, {"start": 768.0, "text": "Identify the moments in your app where Trust Insights can work along"}, {"start": 772.0, "text": "your existing logic to protect users."}, {"start": 775.0, "text": "From there, adopt the framework following the best practices"}, {"start": 779.0, "text": "and developer documentation."}, {"start": 782.0, "text": "Register your business on Apple Business Register"}, {"start": 785.0, "text": "to learn about Partner Data Services."}, {"start": 788.0, "text": "You may also be interested in App Attest"}, {"start": 791.0, "text": "a framework for verifying that server requests"}, {"start": 794.0, "text": "come from legitimate instances of your app."}, {"start": 798.0, "text": "Now is the best time to submit feedback through Feedback Assistant"}, {"start": 803.0, "text": "on any aspect of Trust Insights,"}, {"start": 805.0, "text": "including the framework, its capabilities, or any high-volume use cases."}, {"start": 811.0, "text": "Trust Insights brings behavioral context to your app,"}, {"start": 815.0, "text": "helping detect coercion while preserving privacy."}, {"start": 819.0, "text": "Integrate it at the moments that matter most, handle results thoughtfully,"}, {"start": 824.0, "text": "and close the feedback loop to strengthen the ecosystem."}, {"start": 828.0, "text": "Thank you for watching."}]}