sf-service-ai-intake
Pass
Audited by Gen Agent Trust Hub on Oct 22, 2026
Risk Level: SAFEINDIRECT_PROMPT_INJECTIONDYNAMIC_EXECUTION
Full Analysis
- [INDIRECT_PROMPT_INJECTION]: The skill processes live call transcripts, which are untrusted external inputs. A malicious caller could attempt to influence the AI's data extraction by speaking instructions intended to override the system prompt (e.g., instructing the AI to set a specific field value regardless of the actual conversation).
- Ingestion points: The
transcriptparameter in thebuildPromptApex method (Reference.md) and thelightning/voiceToolkitApisource used by the Lightning Web Component. - Boundary markers: The prompt construction uses structural headers such as
CALL TRANSCRIPT:andQUESTIONS TO ANSWER:to delimit untrusted data from instructions. - Capability inventory: The skill has the capability to
upsertrecords to any Salesforce SObject and field specified in theIntake_Template__candIntake_Question__cconfiguration records. - Sanitization: The AI is strictly instructed to respond only with a valid JSON object. The LWC runtime filters the AI results against a set of currently visible fields, preventing the AI from populating hidden fields. Apex code uses
escapeIdentifierfor dynamic SOQL queries to prevent injection. - [DYNAMIC_EXECUTION]: The skill uses dynamic SObject instantiation and field population based on administrative configuration records.
- Evidence: The
submitToTargetObjectmethod inSKILL.mdusesSchema.getGlobalDescribe().get(objApi).newSObject()andrecord.put(field, value)to dynamically create and populate records. While this is a standard Salesforce design pattern, it relies on the integrity of the configuration metadata records managed by theIntake_Builder_Adminrole.
Audit Metadata