← All reportsPublic report

chatwoot/chatwoot

Open-source live-chat, email support, omni-channel desk. An alternative to Intercom, Zendesk, Salesforce Service Cloud etc. 🔥💬

36k stars Ruby View on GitHubprofiled 14d ago
Try GitZoid
245PRs this week
35Contributors
113Deps scanned
4Issues found
01 · Repo overview

How chatwoot is put together

Chatwoot is an open-source, self-hosted omnichannel customer support platform (an alternative to Intercom/Zendesk) that centralizes conversations from live chat, email, social channels, and messaging apps into a single agent inbox. It is a Ruby on Rails 7.2 monolith (Ruby 3.4) exposing REST APIs and ActionCable websockets, with a Vue 3 single-page frontend (Vuex/Pinia, Vue Router) bundled via Vite, plus a separately-built embeddable JS widget/SDK. Data flows from channel integrations and API/websocket requests through Rails controllers, Pundit-authorized service objects, and Sidekiq background jobs into PostgreSQL (with pgvector, pg_search, OpenSearch/Searchkick) and Redis, with an event pub/sub layer (wisper). It bundles AI ('Captain') features via ruby-openai/ruby_llm and an enterprise/ edition overlay.

Languages

RubyJavaScriptVue (SFC)SCSSTypeScriptSQLShell

Frameworks

Ruby on Rails 7.2Vue 3VuexPiniaVue RouterDevise / devise_token_authPunditSidekiqTailwindCSSViteTurbo (Hotwired)Administrate

Datastores

PostgreSQLRedisOpenSearch (Searchkick)pgvector

Infrastructure

Docker / docker-composeKubernetes (Helm)HerokuDigitalOceanCircleCIPumaForeman/Overmind (Procfile)AWS S3 / Azure Blob / Google Cloud Storage (ActiveStorage)systemd deployment unitsNginx

Major components

Rails backend API & controllers

Serves REST API endpoints, ActionMailbox inbound mail, and web routes for accounts, conversations, contacts, and agents (config/routes.rb).

Vue dashboard frontend

The agent-facing SPA under app/javascript/dashboard providing the inbox, reports, and settings UI.

Embeddable widget & SDK

Website live-chat widget and JS SDK built as a standalone IIFE bundle (app/javascript/entrypoints/sdk.js, vite.lib.config.ts).

Channel integrations

Connectors for Facebook, Instagram, Twitter, WhatsApp/Twilio, Line, Slack, email etc. via gems like facebook-messenger, twilio-ruby, line-bot-api, koala, slack-ruby-client.

Sidekiq background jobs

Asynchronous processing and cron jobs (config/sidekiq.yml, config/schedule.yml) for notifications, imports, and channel sync.

Captain / AI response bot

LLM-powered support automation using ruby-openai, ruby_llm, ai-agents, neighbor/pgvector for semantic search.

Enterprise edition overlay

Additional non-MIT features and views layered via the enterprise/ directory and tasks_railtie.

Superadmin & config management

Administrate-based super admin console plus global/installation config loading (lib/global_config.rb, config/installation_config.yml).

Over the past few weeks Chatwoot has invested heavily in its Captain AI assistant (moving to a V2 model, adding scheduling, outcome reporting, and smarter reply handling) and in WhatsApp features like campaign analytics and click-to-chat ads. Alongside these new capabilities, the team shipped a steady stream of security hardening, performance optimizations, and bug fixes across conversations, filters, and channel integrations. The arc shows a maturing product balancing ambitious AI features with reliability and safety improvements.

Week by week

2026-08-24A focused week of targeted bug fixes, performance tuning, and a Captain dashboard redesign.latest6 changes

Fix

Automation rules stop mis-splitting text on commas

Content filters that contained commas (like 'hello, world') are now treated as a single value instead of being incorrectly broken apart.

Fix

Instagram business login restored

Corrected the Instagram authorization flow so users can once again connect their business accounts.

Feature

Redesigned Captain assistant overview dashboard

The AI assistant's main overview screen was given a refreshed layout and design.

Refactor

Faster user sign-in

Removed repeated database lookups when building a user's login data to speed up authentication.

Refactor

Smaller live-chat widget download

Reduced the size of the embeddable chat script so it loads faster on customer websites.

Docs

Documented message read-status APIs

Added developer documentation explaining how to report sent, delivered, and read status for API-channel messages.

2026-08-17A large release week (4.17.0) featuring WhatsApp campaign analytics, audit-log tooling, and numerous security and reliability fixes.6 changes

Feature

WhatsApp campaign analytics

Added tracking, a delivery analytics dashboard, and clearer status labels so teams can measure how their WhatsApp campaigns perform.

Feature

Audit log filtering, search, and sort

Administrators can now filter, search, and sort the record of account activity to find events more easily.

Fix

Blocked resurfacing of resolved chats from the widget

Prevented customers from accidentally reopening already-resolved conversations through the chat widget.

Fix

Security: identity labels rendered as plain text

Contact identity labels are now displayed safely to prevent malicious code from being injected.

Fix

Security: account-scoped conversation lookups

Restricted conversation source lookups to the current account so data can't leak across accounts.

Feature

Captain outcome statistics exposed

Made the AI assistant's resolution outcome data available for reporting.

2026-08-10A busy week adding macro shortcuts and canned-response caching while hardening CSV exports and search against malformed input.6 changes

Feature

Run macros from the command bar and reply editor

Agents can now trigger saved action sequences directly from the command bar or by typing '#' in the reply box.

Fix

Security: CSV exports escape formula characters

Contact and CSAT exports now neutralize spreadsheet formulas so opening a file can't run unintended commands.

Feature

Browser caching for canned responses

Saved reply templates are stored in the browser so they load instantly.

Feature

Transcribe Twilio call recordings

Voice call recordings from Twilio can now be automatically transcribed to text.

Refactor

Faster conversation sorting

Added a database index to speed up sorting conversations by creation date within an account.

Fix

Reject malformed filter and search input

Search and filters now gracefully handle bad or empty input instead of returning server errors.

2026-08-03A wide-ranging week extending Captain assistant controls, adding a Freshdesk migration path, and tightening WhatsApp and security behavior.6 changes

Feature

Audience and schedule controls for Captain assistants

Admins can now define which audiences an AI assistant serves and when it is active.

Feature

Freshdesk data migration

Began adding the ability to import existing data from Freshdesk into Chatwoot.

Feature

Data imports enabled for paid plans

Paid customers can now import their data, with automatic default naming for imports.

Fix

Security: gated SLA features and inbox access

Restricted SLA APIs and inbox access to properly scoped, feature-enabled accounts.

Feature

Backup-code low-count reminder banner

Users are now nudged with a dashboard banner when their two-factor backup codes are running low.

Fix

Prevent duplicate assignment activity

Stopped duplicate assignment records from appearing when conversations are assigned at the same time.

2026-07-27A foundational week introducing time-based automation and normalized Captain lifecycle events alongside WhatsApp and security hardening.6 changes

Feature

Time-based automation

Added the ability to run automation rules based on time conditions.

Feature

Pending conversation takeover UI

Added an interface letting agents take over conversations that are pending.

Refactor

Normalized Captain lifecycle events

Reworked the AI assistant's internal event handling for more consistent behavior.

Fix

Captain replies to message bursts once

The AI assistant now consolidates rapid-fire customer messages into a single reply instead of responding to each.

Fix

Reject cross-account help-center article edits

Prevented users from modifying help-center articles belonging to another account.

Fix

Consolidated widget rate-limiting controls

Unified the chat widget's request throttling with per-endpoint kill switches and saner default limits.

03 · Security check

Dependencies and code review

113 dependencies scanned

Dependency advisories

Security Watch

4 vulnerable packages (14 advisories) across 113 scanned dependencies.

criticalcritical · npmfixed in 4.1.0

vitest 3.0.5

1 advisory. Fixed in 4.1.0.

How it can be abusedIf a developer runs the test suite with the Vitest browser UI enabled on their machine, anyone on that network could use the exposed test server to read arbitrary files or run code on that developer's computer. This affects developers running tests locally, not the deployed Chatwoot application or its users.

  • criticalGHSA-5xrq-8626-4rwpWhen Vitest UI server is listening, arbitrary file can be read and executed
warninghigh · npmfixed in 1.16.0

axios 1.15.0

11 advisories. Fixed in 1.16.0.

How it can be abusedAn attacker who can influence request configuration could hijack outgoing HTTP requests, steal credentials sent to proxies, tamper with responses, or crash the process with crafted input. In Chatwoot, axios runs mainly in the browser-based Vue frontend talking to its own API over same-origin requests, so an attacker would already need to run code on a user's browser session to exploit this, which limits practical impact.

  • highGHSA-35jp-ww65-95whaxios Vulnerable to Full Man-in-the-Middle via Prototype Pollution Gadget in `config.proxy`
  • highGHSA-3g43-6gmg-66jwaxios Vulnerable to Credential Theft and Response Hijacking via Prototype Pollution Gadget in Config Merge
  • highGHSA-6chq-wfr3-2hj9Axios: Header Injection via Prototype Pollution
  • highGHSA-777c-7fjr-54vfAllocation of Resources Without Limits or Throttling in Axios
  • highGHSA-hfxv-24rg-xrqfAxios: Regular Expression Denial of Service (ReDoS) via Cookie Name Injection
  • highGHSA-j5f8-grm9-p9fcAxios: Proxy-Authorization header leaks to redirect target when proxy is re-evaluated to direct connection
  • highGHSA-p92q-9vqr-4j8vAxios: Proxy-Authorization Credential Leak to Origin Server Across HTTP-to-HTTPS Redirect in Axios Node.js HTTP Adapter
  • highGHSA-pf86-5x62-jrwfAxios: Prototype Pollution Gadgets - Response Tampering, Data Exfiltration, and Request Hijacking
  • highGHSA-pjwm-pj3p-43mvaxios's shouldBypassProxy does not recognize IPv4-mapped IPv6 addresses, allowing NO_PROXY bypass (incomplete fix for CVE-2025-62718)
  • highGHSA-pmwg-cvhr-8vh7Axios: Incomplete Fix for CVE-2025-62718 — NO_PROXY Protection Bypassed via RFC 1122 Loopback Subnet (127.0.0.0/8) in Axios 1.15.0
  • highGHSA-q8qp-cvcw-x6jjAxios has prototype pollution read-side gadgets in HTTP adapter that allow credential injection and request hijacking
warninghigh · npmfixed in 3.0.7

js-cookie 3.0.5

1 advisory. Fixed in 3.0.7.

How it can be abusedThis flaw lets a website's own code be tricked into writing malicious attributes onto every cookie it sets, but only if untrusted user input is used as the cookie name or value in a way that reaches the library's assign function. In Chatwoot, js-cookie is used in the frontend and embeddable widget mostly with fixed names like conversation and user identifiers, so an attacker would need an injection point feeding raw input into those calls; anyone running a self-hosted instance would be exposed mainly through that widget path.

  • highGHSA-qjx8-664m-686jJavaScript Cookie: Per-instance prototype hijack in assign() enables cookie-attribute injection
warninghigh · npmfixed in 8.0.16

vite 6.4.2

1 advisory. Fixed in 8.0.16.

How it can be abusedThis flaw only affects Vite's development server, which lets a developer preview files while coding. An attacker on the same network could trick a Windows developer running the Chatwoot dev server into serving sensitive files from their machine, like environment files with API keys and database passwords.

Code review

No concrete code-level issues confirmed.

Get this report every week for your repos.

GitZoid learns each repo, reports what changed, and flags what needs attention. One flat price for the whole team.

$19 a month, flat · First 10 outputs free · No card required