Answers · AI evidence
Who is liable when an AI chatbot gives a customer wrong information?
Last updated
TL;DR: Usually the business that runs the chatbot. In Moffatt v. Air Canada (2024 BCCRT 149, February 14, 2024), British Columbia's Civil Resolution Tribunal rejected Air Canada's argument that it couldn't be held liable for what its chatbot said, found negligent misrepresentation and ordered it to pay C$812.02, noting it makes no difference whether information comes from a static page or a chatbot. It's a small-claims ruling that doesn't bind other courts, but it's the reasoning to plan for. Disputes like this then turn on what the bot actually said, and in that case the answer reached the tribunal as the customer's screenshot. Keep your own tamper-evident record of every reply.
What should I check, step by step?
1. Treat the bot's answers as your company's statements. The tribunal also rejected Air Canada's point that the correct policy was on another page of its site, asking why customers should have to double-check one part of a website against another.
- For policy topics that cost money (refunds, fares, prices, eligibility, deadlines), have the bot answer from your current policy text, quote it and link to it, instead of paraphrasing from memory.
- Log every conversation on your side: the customer's message, the bot's exact reply, the model snapshot, the system prompt version and any documents it retrieved, with a timestamp.
- Hash each saved transcript when it's written and get the hash timestamped or recorded by a third party, so neither side can later claim it was edited.
- Version your system prompt and knowledge base, and record which version answered, so you can show what the bot had been told at that moment.
- Send answers that commit you to money or eligibility to a human, or have the bot say a person will confirm them.
- When a customer disputes an answer, pull your record before replying, and keep it after you fix the bot. Air Canada's representative admitted by email that the chatbot had provided 'misleading words', and that email was in evidence.
What the Air Canada tribunal decided
In November 2022 the customer asked Air Canada's website chatbot about bereavement fares. The chatbot said a reduced bereavement rate could be requested within 90 days of the ticket being issued, including after travel. Air Canada's linked 'Bereavement travel' page said the policy doesn't apply to requests made after travel is completed.
- The tribunal applied negligent misrepresentation: a duty of care, an untrue or misleading representation made negligently, reasonable reliance, and resulting damage. It found Air Canada owed the customer a duty of care and didn't take reasonable care to make sure its chatbot was accurate.
- Air Canada argued it couldn't be held liable for information provided by its agents, servants or representatives, including a chatbot. The tribunal called that a remarkable submission: the chatbot is still just part of Air Canada's website, and Air Canada is responsible for all the information on it.
- Air Canada also relied on its Domestic Tariff but didn't provide the relevant terms, so it hadn't proven a contractual defence. The award was the fare difference (C$650.88), C$36.14 in pre-judgment interest and C$125 in tribunal fees.
How far the ruling reaches
It's a small-claims decision from one Canadian province's tribunal, so it doesn't bind courts elsewhere. It used ordinary negligent-misrepresentation law rather than any AI-specific rule, which is why it's a sensible baseline for any business putting a bot in front of customers.
- In the EU, Directive (EU) 2024/2853 on liability for defective products treats software, including AI systems, as a product for no-fault liability, for products placed on the market or put into service after 9 December 2026. It covers death or personal injury, damage to property and destruction or corruption of data not used for professional purposes. Its recitals say information itself is not a product, and it doesn't affect other national liability rules such as negligence or contract.
- Who pays between you and your AI vendor is a separate contract question. Read the provider's terms for any indemnity and its exclusions before assuming the vendor shares the risk of a wrong answer.
What evidence decides these disputes
In Moffatt, the chatbot's answer came in as the customer's screenshot and the admission came in as an email. A business with its own complete transcript can show what the bot actually said, whether that helps it or not.
- A log file you can edit is weak evidence. Hashing each transcript when it's written and having someone else record the hash with a time makes later edits detectable.
- Re-running the question later won't reliably reproduce the answer, because models, prompts and knowledge bases change. The record has to be made when the answer is given.
How do I ask Rightshold about this (free, no key)?
Add the MCP server https://www.rightshold.com/mcp to Claude, Cursor, ChatGPT, Grok or VS Code, then ask: “Record a signed receipt for this support-bot reply: the model snapshot, hashes of the conversation and of the bot's exact answer, the system prompt version and when it was sent.”
{
"tool": "record_ai_run",
"arguments": {
"model": "gpt-4o-2024-08-06",
"provider": "openai",
"prompt_sha256": "<sha256 of the saved conversation + system prompt>",
"output_sha256": "<sha256 of the bot's exact reply>",
"params": {
"conversation_id": "<your conversation id>",
"system_prompt_version": "support-v12",
"knowledge_base_commit": "<git sha>"
},
"ran_at": "2026-10-30T14:00:00Z"
}
}- Needs an API key. You can send hashes only; if you send the text instead, Rightshold stores only its SHA-256. The receipt is Ed25519-signed, gets an issued_at time from Rightshold's clock and goes on Rightshold's append-only ledger, whose blocks are also anchored to Bitcoin through OpenTimestamps.
- verify_ai_run is free and needs no key: you, the customer or a tribunal can send the receipt id plus the reply text to check it matches the recorded hash.
- To flag risky replies as they're recorded, send the reply as output with checks such as {"type": "contains", "none": ["retroactive"]} or a regex; pass or fail is signed into the receipt. These are simple text rules, not a fact-check.
A receipt proves what was recorded and when Rightshold recorded it. It doesn't show the bot's answer was correct or decide who's liable, and in recorded mode it doesn't prove the named model produced the reply. Rightshold doesn't host or monitor your chatbot. Not legal advice.
What are the sources?
- Moffatt v. Air Canada, 2024 BCCRT 149 (CanLII)
- Civil Resolution Tribunal decision: Moffatt v. Air Canada
- Directive (EU) 2024/2853 on liability for defective products (EUR-Lex)
- EUR-Lex summary: Defective products, liability
Related
- How to prove what an AI model said at a specific time
- How to add a human handoff to a WhatsApp AI agent
- How to check AI-generated citations for hallucinations
- Verified AI Runs
Not legal advice. JSON · Markdown · All answers
Get a free API key in one call
No card and no email needed. 100 free credits; the license and policy checks stay free without a key.
curl -s -X POST https://www.rightshold.com/v1/accounts/signup -H "Content-Type: application/json" -d '{"accept_terms":true}'
export RIGHTSHOLD_API_KEY=rs_... # the api_key from the reply (shown once)
curl -s https://www.rightshold.com/v1/licenses/check -H "Authorization: Bearer $RIGHTSHOLD_API_KEY" \
-H "Content-Type: application/json" -d '{"license":"MIT","intended_use":{"commercial_use":true}}'
