Secure AI copilot configuration #
AvailableThe Settings → Identity and integrations → AI copilot panel configures one provider for the organization. It is restricted to administrators. The copilot assists analysis and writing, while suggestions remain subject to human validation and never make automatic decisions.
Providers and models #
RiskPilot provides presets for Mistral AI, OpenAI and Google Gemini, plus a custom compatible endpoint. Presets enforce their HTTPS URL and suggest a default model; the model name remains editable. For a custom endpoint, enter a public HTTPS URL and the expected model.
API key and activation #
Use a dedicated RiskPilot key with provider-side quotas and restrictions. The key is encrypted by the application secret mechanism, never returned by the API and never displayed again. Leaving the field empty retains the existing key. A stored key is required before enabling the copilot.
Data policy #
The MINIMAL policy restricts transmission to strictly necessary excerpts. CONTEXTUAL allows explicitly selected GRC context. Additional system instructions are limited to 4,000 characters. Never place secrets, unnecessary personal data or instructions that bypass business validation in this field.
Save and test #
- Select the provider and verify the model.
- Enter or rotate the API key.
- Choose the data policy and additional instructions.
- Save before enabling the copilot.
- Test the connection for Mistral, OpenAI or Gemini.
The test requests the model list with a ten-second maximum duration. It is intentionally disabled for custom endpoints to prevent requests to internal network services. Failures return AI_CONNECTION_FAILED without exposing the key.
Global GRC conversation #
The floating AI copilot button opens a conversation from every authenticated screen. It guides ISMS, risk, third-party, EBIOS RM, NIS2, GDPR and ISO/IEC 27001 workflows. It distinguishes facts, recommendations and missing information; it cannot claim certification or legal certainty and cannot state that an object was created.
Before every request, the user authorizes transmission of the conversation to the configured provider. A question contains 3 to 2,000 characters. Up to eight history messages, each limited to 2,000 characters, accompany the request. Answers are capped at 12,000 characters and follow the profile language.
Contextual compliance copilot #
From an assessment result, AI copilot first displays the exact context to be sent. MINIMAL includes framework, requirement reference, title and category, maturity level and status. CONTEXTUAL adds requirement description, assessment scope, current comment, evidence references and remediation action.
The user reviews this preview and gives explicit consent for every question. The answer cites the requirement as its source and can explain the control, suggest evidence or help draft a comment. It never changes a score, status, evidence, comment or action. A result belonging to another organization is treated as not found.
Generated and reviewed third-party risk #
The Guided third-party risk tab, restricted to Risk managers and administrators, accepts a 10-to-2,000-character request and explicit consent. RiskPilot sends the request plus a catalogue limited to 200 organization-visible scopes, 200 assets and 200 threats. The model must select only those identifiers and proposes a title, description, likelihood and impact from 1 to 5, with a separate rationale.
The server rejects incomplete output, out-of-range scores or relations missing from the catalogue with AI_PROVIDER_FAILED or AI_DRAFT_INVALID_RELATION. Generation also requires at least one scope, asset and threat (RISK_CATALOG_INCOMPLETE). Every field remains editable and the user selects the owner. The preview calculates gross score; a separate confirmation then calls POST /api/risks to create a THIRD_PARTY, SIMPLIFIED, DRAFT, REDUCE risk without preselected vulnerabilities or controls.
Generated and reviewed compliance action #
The Guided compliance action tab uses the same role and consent safeguards. Its catalogue contains up to 200 visible results with PARTIAL, NON_COMPLIANT or NOT_ASSESSED status. The provider receives the request and framework labels, then proposes one requirement, a measurable title and description, a priority from LOW, MEDIUM, HIGH, CRITICAL, a type from TECHNICAL, ORGANIZATIONAL, HUMAN, PHYSICAL, CONTRACTUAL, OTHER, a relative due date from 1 to 365 days and a rationale.
RiskPilot revalidates the proposed identifier. An empty catalogue returns COMPLIANCE_CATALOG_EMPTY; a foreign relation returns AI_DRAFT_INVALID_RELATION. The user selects the owner, can edit every field and confirms separately. POST /api/actions then creates an OPEN action with NON_CONFORMITY origin and 0% progress, linked to the selected result, requirement and framework. No evidence is added automatically.
The Guided ISMS document tab prepares title, category and content. After review and confirmation, it uses the document API to create an INTERNAL, organization-visible document owned by the requester with an initial draft version. This creates a first governed document, not a complete ISMS.
Risk and action generation only return a draft with automaticWrite: false. The ISMS document remains a local guided form. In all three cases, writing uses a separate business API after review, a confirmation checkbox and the usual authorization checks.
Privacy, security and audit #
Global and compliance conversations share a quota of 20 calls per user per hour within the organization. Custom providers are rejected for these conversations with CUSTOM_PROVIDER_UNAVAILABLE until their SSRF protection is validated. OpenAI uses the Responses API with store: false and a pseudonymous safety identifier; Mistral uses chat completions and Gemini uses generateContent. Provider timeout is 30 seconds.
Every successful call audits provider, model, policy and the question's SHA-256 hash without placing conversation text in audit metadata. Compliance calls add the result identifier and sources. automaticWrite always remains false.
API and validation #
| Method | Endpoint | Purpose |
|---|---|---|
GET | /api/settings/ai | read configuration without the key |
PUT | /api/settings/ai | save provider, model, policy and enabled state |
POST | /api/settings/ai/test | test credentials for a preset provider |
GET | /api/copilot/context | read global copilot state, model and capabilities |
POST | /api/copilot | ask a GRC question with consent |
POST | /api/copilot/risk-draft | generate a risk draft from the tenant catalogue |
GET | /api/copilot/compliance-catalog | list eligible visible gaps |
POST | /api/copilot/compliance-action-draft | generate a compliance action draft |
GET | /api/compliance-results/{id}/copilot/context | preview transmitted compliance data |
POST | /api/compliance-results/{id}/copilot | ask about one requirement |
Configuration requires an administrator role, an HTTPS URL, a recognized provider, a model up to 120 characters and a MINIMAL or CONTEXTUAL policy. Settings are organization-scoped. The three structured catalogue or generation routes require ROLE_RISK_MANAGER; administrators and super-administrators also satisfy this check through role hierarchy.
AI routes notably return AI_DISABLED (409), CUSTOM_PROVIDER_UNAVAILABLE (422), INVALID_REQUEST (422), INVALID_HISTORY (422), RISK_CATALOG_INCOMPLETE (422), COMPLIANCE_CATALOG_EMPTY (422), AI_RATE_LIMIT (429), AI_PROVIDER_FAILED (502) or AI_DRAFT_INVALID_RELATION (502). Compliance preview may also return NOT_FOUND (404).
Example request:
{"question":"What evidence should I gather for this requirement?","consent":true,"history":[{"role":"user","content":"We perform a quarterly control."}]}Structured-generation example; the response must be displayed and edited before any creation:
{"prompt":"Formalise the quarterly privileged-access review and retain approval evidence.","consent":true}