Security

Trust & Security

Last updated: 26 September 2026. This page summarises how CourseFoundry stores, processes, and protects your data. For enterprise customers, a signed Data Processing Agreement (DPA) is available on request - see our DPA template.

Infrastructure & Hosting

The database, file storage, authentication and application are hosted in the United States (Supabase US-East and Vercel US regions), and so is rendered course output.

AI processing takes place in the regions of the selected AI provider. EU data residency is not currently available. Where an organisation routes all AI to its own Azure endpoint, AI processing follows that endpoint's region.

Database & authenticationManaged PostgreSQL with row-level security enabled on every table, and managed authentication (email and password, or sign-in with an existing external account).
File storageManaged object storage in the same project as the database.
Course publishingPublished courses are served by CourseFoundry from their rendered output, or published as a static site from a repository you own, so that copy stays in your own infrastructure.

EU Data Residency (planned)

EU data residency is on the roadmap for Enterprise and is not yet available. Every workspace's data is stored in the US today. If you need EU residency, contact us.

Data at restAES-256 managed encryption for the database and file storage, in the United States.
Authentication dataUser credentials and sessions are held by the managed authentication service in the same United States project.
Applicable regulationGDPR Chapter V (International transfers) - EU personal data transferred to the US is covered by our standard SCCs; EU-US Data Privacy Framework self-certification is in progress.

Encryption

  • In transit: TLS 1.2 minimum, TLS 1.3 preferred, on all customer-facing endpoints.
  • At rest: AES-256 managed encryption for the database and file storage.
  • GitHub deploy keys: Ed25519 key pairs encrypted with libsodium sealed-box before storage.
  • Customer-managed keys: Not currently offered. On the roadmap for Enterprise customers.

Backup & Disaster Recovery

  • Backup schedule: Daily automated backups, retained for 7 days.
  • RPO (Recovery Point Objective): ≤ 24 hours.
  • RTO (Recovery Time Objective): ≤ 72 hours.
  • Course content: Courses can be committed to your GitHub repository at any time, giving you a sovereign copy independent of CourseFoundry's infrastructure.

Incident Response

  • Customer notification: Within 48 hours of CourseFoundry becoming aware of a breach affecting your data.
  • Regulatory notification: Within 72 hours, as required by GDPR Article 33.
  • Contact: security@coursefoundry.com
  • Vulnerability disclosure: Responsible disclosure at security@coursefoundry.com. No bug bounty programme currently.
  • Penetration testing: Annual external test by a CREST-accredited firm. Executive summary available under NDA on request.

AI & Your Data

  • Training: CourseFoundry does not use your content to train AI models. What an AI provider says about its own training and retention practices is that provider's statement, attributed to it in the subprocessor list below.
  • AI providers: Which provider receives a request depends on the provider and model your workspace uses, including your organisation's own provider key or endpoint. Every provider is listed in the subprocessor list below.
  • Zero data retention (ZDR): Zero data retention depends on your organisation supplying its own AI provider key or endpoint covered by a zero-data-retention agreement with that provider. Turning on the zero-data-retention setting does not by itself change what CourseFoundry stores: CourseFoundry's own storage of AI content follows the capture, prompt-logging and retention settings. Coverage also depends on which models the provider's agreement covers; for example, Anthropic states that its zero-data-retention arrangements do not extend to its Fable 5 and 5.1 models without its express authorisation.
  • Turning AI off: On the Enterprise plan, workspace owners and administrators can turn AI features off for the whole workspace in Settings → AI Controls. When off, no member of the workspace can use AI Forge, workflows or the agent.

CourseFoundry stores some AI content, depending on the feature and on your workspace's settings. The list below shows each kind of stored AI data, when it is stored, who can read it and how long it is kept.

AI usage recordsWhen and what

For every AI request.

Who made the request, which feature it came from and, for a course, which course, the model and provider, token counts, cost in credits, response time, the outcome, and for a failed request the first 120 characters of the error message.

Who can read it
  • The user who made the request
  • Organisation owners and administrators, for requests made in their organisation
How long it is kept Kept until the account is deleted.
Prompt summariesWhen and what

Only when an organisation turns on prompt logging.

A short description of each request: the feature used and any course, lesson and title text it concerned, up to 60 characters each, plus the length of any content sent. Never the full prompt.

Who can read it
  • The user who made the request
  • Organisation owners and administrators, for requests made in their organisation
How long it is kept Kept until the account is deleted.
Captured prompts and responsesWhen and what

Only when a user turns on capture for themselves, or an organisation turns it on for its members.

The full request: system prompt, messages, the AI response and any tool calls. Images are replaced with a short placeholder. Teaching Guide material is also replaced with a short placeholder, and so is the AI response to a request that used it. Where the guide is available to the AI, earlier AI replies in the conversation, and any reply that follows them, are replaced too. This is because the guide is private to its author. Email addresses and phone numbers are redacted only when the organisation turns on personal-data redaction.

Who can read it
  • The user who made the request
  • Organisation owners and administrators, for prompts captured in their organisation, which covers every member while organisation-wide capture is on
How long it is kept Deleted automatically after the chosen period of 1 to 365 days (default 30). The period is fixed when the prompt is captured, so changing the setting later does not change when prompts already captured expire.
Prompts held for image processingWhen and what

When the selected AI model cannot process an image at the time of the request.

The full prompt and conversation turns, with the images held separately in private storage.

Who can read it
  • The user who made the request
How long it is kept The images are deleted automatically after 30 days unless the request has been retried. The prompt text is kept until the account is deleted. When the account is deleted the prompt record is removed, but the held images are not automatically deleted.
Saved Programme Designer answers and reviewsWhen and what

Only when a user chooses to save a Programme Designer answer or review.

The full answer or review text, up to 100,000 characters, with its findings and, for a saved answer, the question asked.

Who can read it
  • Programme leaders and co-leaders
  • Organisation administrators
How long it is kept Kept until the programme is deleted.
Opening text of Help and Programme Designer questionsWhen and what

For every question asked of the Help assistant or the Programme Designer.

The first 300 characters of the question, with the feature and time it was asked. Never the answer.

Who can read it
  • Help questions: the user who asked, and our platform administrators without the user identity
  • Help questions asked at least twice: other signed-in users, as popular questions, showing the text only, without the identity of who asked
  • Programme Designer questions: programme leaders and organisation administrators
How long it is kept Kept until the account is deleted.
Learner questions to the course AI tutorWhen and what

When a learner's question leads the course AI tutor to search or read the course.

The shortened text the tutor searched the course for and the name of the tool it used, with no learner identity. The learner's conversation is never stored.

Who can read it
  • The course owner
How long it is kept Kept until the course is deleted.
Course AI chat historyWhen and what

Whenever an author uses the AI chat in a course's editor.

Each author's AI chat for a course, saved as part of the course in the file _coursefoundry/chat/history.jsonl, with images removed.

Who can read it
  • The course owner
  • Organisation members who can read the course, for a course held by an organisation
  • Anyone with access to the author's connected GitHub snapshot repository, since the course's files are committed there
  • Anyone who copies the course files locally with cf clone
How long it is kept Kept until the course is deleted.

Certifications & Compliance

SOC 2 Type IIIn progress - Vanta tooling engaged, audit scheduled Q3 2026
ISO/IEC 27001Planned Q4 2026, following SOC 2 Type I
Cyber Essentials PlusIn progress
EU-US Data Privacy FrameworkSelf-certification in progress
GDPR (EU)Compliant - DPA available on request for Enterprise customers
UK GDPRCompliant - UK IDTA available on request

Subprocessors

CourseFoundry uses the third parties below to provide the service. Each is listed with where it processes data and what it is used for; uses that apply only when you turn on a feature or supply your own provider key are listed separately. Customers who have signed our DPA receive 30 days' prior written notice of any new subprocessor, with the right to object, and every addition, removal or correction to this list is recorded in the change history below.

Always used

SupabaseLocation USAPurpose and data

Database, authentication (including SAML single sign-on) and file storage for the whole platform

Data: Account details (name, email, username); Course, programme and file content; AI usage records and stored AI data; Sign-in and session data

Always

VercelLocation USA + EdgePurpose and data

Application hosting and serverless functions

Data: All request data, including IP address and the content of each request

Always

Web Analytics: page views and visit counts

Data: Pages visited; Referrer; Device, browser and country, derived from the request

Always

Speed Insights: page performance measurements

Data: Page URL; Performance timings; Device and browser type

Always

Retention: Vercel states that on the Hobby plan CourseFoundry uses, Web Analytics data is guaranteed to be kept for a 1-month reporting window, and that Vercel may store data for longer

Vercel states: On the Hobby plan, Web Analytics data is guaranteed to be stored and viewable for a 1-month reporting window, and Vercel may store data for longer. Source, checked 26 September 2026.

StripeLocation USAPurpose and data

Payment processing and subscription management

Data: Name and email; Billing address; Payment card details, entered directly with Stripe; Subscription and purchase history

Always

ResendLocation USAPurpose and data

Transactional email delivery

Data: Recipient email address and name; Email content

Always

Retention: Resend states it retains email data for 30 days

Resend states: Email data, including content, metadata, delivery events and logs, is retained for 30 days on all standard plans. Source, checked 24 September 2026.

CloudflareLocation Global CDNPurpose and data

Turnstile bot protection on sign-up, sign-in, password reset and enquiry forms

Data: IP address; Browser and TLS fingerprint; User agent

Always

jsDelivrLocation Global CDNPurpose and data

Loads the Mermaid diagram and Alpine.js interactivity scripts used by published courses, from the learner's browser

Data: IP address; User agent (browser type and version); Referring site (domain only); The script requested

Always

jsDelivr states: The CDN is operated by Volentio JSD Limited, a company registered in England and Wales. Source, checked 25 September 2026.

jsDelivr states: All CDN traffic is served by Cloudflare, Fastly and Gcore, which see the IP address and other information the browser sends. Source, checked 25 September 2026.

jsDelivr states: Non-aggregated usage data, which may include IP address, browser, referrer domain and requested URL, is kept until it is analysed and then deleted, unless it is used for security or to improve the service or the law requires longer; aggregated usage data is kept indefinitely. Source, checked 25 September 2026.

AnthropicLocation USA (data at rest); inference may run globallyPurpose and data

Default AI provider for AI Forge, chat, agent, workflows, the learner tutor and the Programme Designer

Data: Prompts, including course and programme content; Pasted images; AI responses

Always

Anthropic states: API inputs and outputs are deleted within 30 days of receipt, or kept up to 2 years if flagged for a usage-policy violation. Source, checked 24 September 2026.

Anthropic states: API inputs and outputs are not used to train its models by default. Source, checked 24 September 2026.

OpenAILocation Not stated by the providerPurpose and data

Search indexing of programme outcomes (embeddings), used for outcome search and benchmarking, on the platform account, whichever AI provider an organisation selects

Data: Programme outcome text

Always

Search indexing of course content (embeddings) and voice transcription, on the platform account, whichever AI provider an organisation selects

Data: Course content; Voice recordings for dictation and recordings

Always

OpenAI states: API data is kept in abuse-monitoring logs for up to 30 days and is not used to train its models. Source, checked 24 September 2026.

Google FontsLocation Not stated by the providerPurpose and data

Web fonts, loaded by the browser from Google Fonts on every page

Data: IP address; User agent

Always

Used only when you enable a feature or supply your own key

CloudflareLocation Global CDNPurpose and data

Serves the Font Awesome icon stylesheet (cdnjs) that courses built from the interactive R or Python template load in the learner's browser

Data: IP address; User agent (browser type and version); Referring site (R template pages only); The file requested

When you enable: Interactive R or Python course templates

jsDelivrLocation Global CDNPurpose and data

Loads the reveal.js slide library in an author's browser when a slide deck is previewed in the classic editor or the pop-out preview

Data: IP address; User agent (browser type and version); Referring site (domain only); The script requested

When you enable: Slide deck preview (classic editor and pop-out preview)

Loads the pdf.js library in an author's browser to read a PDF being imported

Data: IP address; User agent (browser type and version); Referring site (domain only); The script requested

When you enable: PDF imports

Loads the MathJax maths renderer in the learner's browser when a published course page contains mathematics

Data: IP address; User agent (browser type and version); Referring site (domain only); The script requested

When you enable: Mathematics in course pages

Loads the Pyodide Python runtime (Python template) and the Monaco code editor (R and Python templates) in the learner's browser, for courses built from the interactive R or Python template

Data: IP address; User agent (browser type and version); Referring site (domain only); The files requested

When you enable: Interactive R or Python course templates

jsDelivr states: The CDN is operated by Volentio JSD Limited, a company registered in England and Wales. Source, checked 25 September 2026.

jsDelivr states: All CDN traffic is served by Cloudflare, Fastly and Gcore, which see the IP address and other information the browser sends. Source, checked 25 September 2026.

jsDelivr states: Non-aggregated usage data, which may include IP address, browser, referrer domain and requested URL, is kept until it is analysed and then deleted, unless it is used for security or to improve the service or the law requires longer; aggregated usage data is kept indefinitely. Source, checked 25 September 2026.

Shields.ioLocation Not stated by the providerPurpose and data

Serves the "Built with Course Foundry" badge when an author previews the course README in the editor

Data: IP address; User agent (browser type and version); The badge requested

When you enable: Course README preview in the editor

Shields.io states: It does not store logs of visits or requests and uses no cookies. Source, checked 25 September 2026.

Shields.io states: It is hosted on fly.io, with Cloudflare for DNS and CDN services. Source, checked 25 September 2026.

webRLocation Not stated by the providerPurpose and data

Serves the webR runtime and R packages that courses built from the interactive R template load in the learner's browser

Data: IP address; User agent (browser type and version); Referring site; The files requested

When you enable: Interactive R course template

GitHubLocation USA (primarily)Purpose and data

Course snapshots, publishing via GitHub Pages and code repositories

Data: Course content; GitHub username and access token

When you enable: GitHub connection

Programme backups

Data: Programme content; GitHub username and access token

When you enable: GitHub connection

Sign in with GitHub, through Supabase Auth

Data: GitHub account name and email

When you enable: Sign in with GitHub

ZoteroLocation USAPurpose and data

Reference library sync

Data: Zotero user id and API key; Library collections and citations

When you enable: Zotero sync

OpenAILocation Not stated by the providerPurpose and data

AI features, when OpenAI is the selected provider or an author supplies their own OpenAI key

Data: Prompts, including course and programme content; Pasted images; AI responses

With your own provider key

OpenAI states: API data is kept in abuse-monitoring logs for up to 30 days and is not used to train its models. Source, checked 24 September 2026.

GoogleLocation Any country (Google states Gemini API data may be processed in any country where it or its agents operate)Purpose and data

Gemini AI features, when an organisation or author supplies its own Gemini key

Data: Prompts, including course and programme content; Pasted images; AI responses

With your own provider key

Export of lessons and slides to Google Drive, Docs and Slides

Data: Exported course content; Google account access token

When you enable: Google Docs export

Sign in with Google, through Supabase Auth

Data: Google account name and email

When you enable: Sign in with Google

Google states: Prompts and responses on paid-tier keys are not used to improve its products; free-tier prompts and responses are used to improve its products and may be read by human reviewers. Source, checked 24 September 2026.

YouTubeLocation Not stated by the providerPurpose and data

Plays a YouTube video that the course author chooses to embed in a course page, in the learner's browser

Data: IP address; User agent (browser type and version); The video requested

When you enable: Embedded YouTube videos

MicrosoftLocation The geography of the organisation's own Azure resourcePurpose and data

AI features routed to an organisation's own Azure OpenAI or Foundry deployment, authenticated with Microsoft Entra

Data: Prompts, including course and programme content; Pasted images; AI responses; Entra client credentials

With your organisation's own AI endpoint

Audit log export to an organisation's Azure Blob Storage or Log Analytics workspace

Data: Audit events, including user identifiers and actions taken

When you enable: Azure audit export

Microsoft states: Prompts and completions are not used to train its models, and Standard deployments process data in the geography the customer chose. Source, checked 24 September 2026.

ReplicateLocation Not stated by the providerPurpose and data

AI image generation for course media

Data: Image prompts written by the author

When you enable: AI image generation

Replicate states: Predictions created through the API are deleted after one hour. Source, checked 24 September 2026.

Replicate states: Its terms (section 5.2) grant it a licence to use customer data, including to train and generate customer derivative models. Source, checked 24 September 2026.

Change history

26 September 2026Party All statementsChange UpdatedReason Statements about stored AI data, retention, account deletion, hosting and zero data retention corrected to match the platform.
26 September 2026Party CloudflareChange Previously undisclosed; now listedReason Receives data for Turnstile bot protection on sign-up, sign-in, password reset and enquiry forms; previously omitted from this list.
26 September 2026Party jsDelivrChange Previously undisclosed; now listedReason Serves the diagram and interactivity scripts that published courses load in learners' browsers, and the slide preview and PDF import libraries loaded in authors' browsers; previously omitted from this list.
26 September 2026Party Shields.ioChange Previously undisclosed; now listedReason Serves the badge in the course README when an author previews it in the editor; previously omitted from this list.
26 September 2026Party webRChange Previously undisclosed; now listedReason Serves the webR runtime and R packages that courses built from the interactive R template load in learners' browsers; previously omitted from this list.
26 September 2026Party OpenAIChange Previously undisclosed; now listedReason Receives data for search indexing and voice transcription whichever AI provider is selected, and for AI features when OpenAI is selected; previously omitted from this list.
26 September 2026Party GoogleChange Previously undisclosed; now listedReason Receives data for Gemini with an own key, Google Drive export and Google sign-in; previously omitted from this list.
26 September 2026Party Google FontsChange Previously undisclosed; now listedReason Serves the web fonts every page loads in the browser; previously omitted from this list.
26 September 2026Party YouTubeChange Previously undisclosed; now listedReason Plays YouTube videos that course authors choose to embed, in learners' browsers; previously omitted from this list.
26 September 2026Party MicrosoftChange Previously undisclosed; now listedReason Receives data for AI routed to an organisation's own Azure deployment and for Azure audit export; previously omitted from this list.
26 September 2026Party ReplicateChange Previously undisclosed; now listedReason Receives image prompts for AI image generation; previously omitted from this list.
26 September 2026Party SupabaseChange UpdatedReason SAML single sign-on now named explicitly under authentication; data categories and use condition now published.
26 September 2026Party VercelChange UpdatedReason Now also listed for Speed Insights page performance measurements; data categories now published.
26 September 2026Party StripeChange UpdatedReason Data categories and use condition now published; purpose and region unchanged.
26 September 2026Party ResendChange UpdatedReason Data categories and use condition now published; purpose and region unchanged.
26 September 2026Party GitHubChange UpdatedReason Now also listed for Sign in with GitHub, code repositories and programme backups.
26 September 2026Party ZoteroChange UpdatedReason Data categories now published; purpose, region and use condition unchanged.
26 September 2026Party AnthropicChange UpdatedReason Now also listed for the agent, workflows, the learner tutor and the Programme Designer; region corrected from USA to USA for data at rest, with inference that may run globally; provider terms now published.

Your Rights

  • Access & portability (Art. 15, 20): Download all your data from Settings → Export My Data.
  • Erasure (Art. 17): Delete your account in Settings. What deletion removes, and what is kept and why, is listed below.
  • Rectification (Art. 16): Update your profile in Settings at any time.
  • DPA / SCCs: Enterprise customers can request a signed Data Processing Agreement. View our DPA template.

What account deletion removes

Your account and the records that belong to itWhat happens RemovedDetails Account deletion is self-service in Settings and takes effect immediately in the live system. Your profile, any courses you created and their files, your AI usage records, captured prompts, Help and Programme Designer question records, saved Programme Designer answers and reviews you wrote, and the records of prompts held for image processing are removed at once. Two kinds of stored file are not removed from storage when the account is deleted: images held for deferred AI processing, and rendered course output.
Security and activity audit eventsWhat happens KeptDetails Kept as a security record, and the link to your account is removed. An event can still contain your email address (for example, invitation and module-invite events), your IP address and your browser details. Events in an organisation stay readable by that organisation's owners and administrators.
Programme change-log entriesWhat happens Kept with your account link removedDetails The author link is removed; the entry is otherwise kept in the programme's change history.
Beta feedback messagesWhat happens KeptDetails The feedback text is kept to improve the product, with your email address and username removed.
Database backupsWhat happens Kept in backups until they expireDetails Backups may still hold deleted data for up to 7 days, after which it is gone.
An organisation's view of a member who leavesWhat happens KeptDetails AI usage records and captured prompts made in an organisation stay visible to that organisation's owners and administrators after the member leaves, until the account or the organisation is deleted.

Contact

Security questions: security@coursefoundry.com
Privacy & data requests: privacy@coursefoundry.com
Enterprise DPA requests: enterprise@coursefoundry.com