Open-source live-chat, email support, omni-channel desk. An alternative to Intercom, Zendesk, Salesforce Service Cloud etc. 🔥💬
This report summarizes scanner evidence for chatwoot/chatwoot, a Ruby project with 38,664 GitHub stars. SynthScan examined 1,419,279 lines of code across 8750 source files, recording 1528 pattern matches distributed across 17 syntactic categories. The legacy adjusted pattern signal is 1.5 (Low pattern signal); it is not an authorship estimate.
Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.
Use each vector to guide manual verification of the underlying findings.
Payload schema: 1.0.0 · Engine: 2.0.0 · Scoring: heuristic-density-v1 · Scan date: 2026-10-31.
Can maintainers explain intent, assumptions, and trade-offs? 1152 finding(s).
Are imports declared and package/API names verified? 349 finding(s).
Are wrappers, guards, and repeated structures necessary? 682 finding(s).
Which changes need focused human review? 1528 finding(s).
This chart tracks the legacy adjusted pattern score across scan runs. Changes can reflect source changes, scan coverage, or detector/scoring versions; they do not measure AI adoption or prove that a team refactored code. Compare runs only when their scoring versions are compatible. The dashed line tracks the raw pattern-hit count.
Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.
This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.
The scanner identified 1528 distinct pattern matches across 17 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | app/mailers/conversation_reply_mailer.rb | 65 | def init_conversation_attributes(conversation) | CODE |
| LOW | app/mailers/references_header_builder.rb | 42 | def get_references_from_replied_message(conversation, in_reply_to_message_id) | CODE |
| LOW | app/mailers/references_header_builder.rb | 77 | def extract_references_from_message(message) | CODE |
| LOW | …nistrator_notifications/account_notification_mailer.rb | 2 | def account_deletion_user_initiated(account, reason) | CODE |
| LOW | …nistrator_notifications/account_notification_mailer.rb | 14 | def account_deletion_for_inactivity(account, reason) | CODE |
| LOW | …ent_notifications/conversation_notifications_mailer.rb | 34 | def assigned_conversation_new_message(conversation, agent, message) | CODE |
| LOW | …ent_notifications/conversation_notifications_mailer.rb | 46 | def participating_conversation_new_message(conversation, agent, message) | CODE |
| LOW | app/builders/contact_inbox_with_contact_builder.rb | 84 | def find_contact_by_instagram_source_id(instagram_id) | CODE |
| LOW | app/builders/contact_inbox_with_contact_builder.rb | 98 | def find_contact_by_identifier(identifier) | CODE |
| LOW | app/builders/messages/message_builder.rb | 233 | def process_liquid_in_email_body(content) | CODE |
| LOW | app/builders/messages/messenger/message_builder.rb | 76 | def update_attachment_file_type(attachment) | CODE |
| LOW | app/builders/messages/messenger/message_builder.rb | 115 | def get_story_object_from_source_id(_source_id) | CODE |
| LOW | app/builders/messages/messenger/message_builder.rb | 143 | def update_facebook_reel_content(attachment) | CODE |
| LOW | app/builders/messages/facebook/message_builder.rb | 135 | def process_contact_params_result(result) | CODE |
| LOW | app/builders/messages/instagram/base_message_builder.rb | 118 | def create_story_reply_attachment(story_url) | CODE |
| LOW | app/builders/messages/instagram/base_message_builder.rb | 179 | def find_message_by_source_id(source_id) | CODE |
| LOW | app/builders/messages/instagram/base_message_builder.rb | 198 | def get_story_object_from_source_id(source_id) | CODE |
| LOW | app/builders/messages/instagram/message_builder.rb | 8 | def get_story_object_from_source_id(source_id) | CODE |
| LOW | …ilders/messages/instagram/messenger/message_builder.rb | 8 | def get_story_object_from_source_id(source_id) | CODE |
| LOW | app/builders/v2/reports/drilldown_record_serializer.rb | 32 | def serialize_conversation_event(event) | CODE |
| LOW | app/builders/v2/reports/drilldown_builder.rb | 100 | def distinct_conversation_event_ids(events) | CODE |
| LOW | app/builders/v2/reports/label_summary_builder.rb | 61 | def fetch_conversation_counts(conversation_filter) | CODE |
| LOW | app/models/inbox.rb | 212 | def dispatch_reauthorization_event(reauthorization_required) | CODE |
| LOW | app/models/attachment.rb | 201 | def validate_file_content_type(file_content_type) | CODE |
| LOW | app/models/message.rb | 455 | def validate_attachments_limit(_attachment) | CODE |
| LOW | app/models/conversation.rb | 267 | def dispatch_conversation_updated_event(previous_changes = nil) | CODE |
| LOW | app/models/automation_rule.rb | 188 | def validate_single_condition(condition) | CODE |
| LOW | app/models/application_record.rb | 37 | def check_and_validate_content_length(column) | CODE |
| LOW | app/models/application_record.rb | 49 | def normalize_empty_string_to_nil(attrs = []) | CODE |
| LOW⚡ | app/models/user.rb | 136 | def send_confirmation_instructions_with_redirect(redirect_url:) | CODE |
| LOW⚡ | app/models/user.rb | 143 | def send_reset_password_instructions(redirect_url: nil, sso_account_id: nil) | CODE |
| LOW⚡ | app/models/user.rb | 152 | def send_reset_password_instructions_notification(token) | CODE |
| LOW | app/models/channel/telegram.rb | 44 | def get_telegram_profile_image(user_id) | CODE |
| LOW | app/models/channel/telegram.rb | 130 | def convert_markdown_to_telegram_html(text) | CODE |
| LOW | app/models/channel/whatsapp.rb | 139 | def send_contact_info_request(identifier, message) | CODE |
| LOW | app/models/integrations/hook.rb | 206 | def settings_cloudflare_realtimekit_credentials(value) | CODE |
| LOW | app/models/concerns/inbox_branded_email_layoutable.rb | 14 | def effective_branded_email_layout_template(locale = I18n.locale) | CODE |
| LOW | app/models/concerns/sort_handler.rb | 18 | def sort_on_priority_created_at(sort_direction = :desc) | CODE |
| LOW | app/models/concerns/account_email_rate_limitable.rb | 33 | def reserve_email_send_capacity(count = 1) | CODE |
| LOW | app/models/concerns/account_email_rate_limitable.rb | 48 | def attempt_email_capacity_reservation(count) | CODE |
| LOW | …p/models/concerns/assignee_activity_message_handler.rb | 6 | def create_assignee_change_activity(user_name) | CODE |
| LOW | …p/models/concerns/assignee_activity_message_handler.rb | 15 | def generate_assignee_change_activity_content(user_name) | CODE |
| LOW | app/models/concerns/activity_message_handler.rb | 83 | def user_status_change_activity_content(user_name) | CODE |
| LOW | app/models/concerns/activity_message_handler.rb | 117 | def create_mute_change_activity(change_type) | CODE |
| LOW | app/models/concerns/sla_activity_message_handler.rb | 6 | def create_sla_change_activity(change_type, user_name) | CODE |
| LOW | app/models/concerns/reauthorizable.rb | 58 | def send_channel_reauthorization_email(disconnect_type) | CODE |
| LOW | app/models/concerns/reauthorizable.rb | 80 | def dispatch_inbox_reauthorization_event(reauthorization_required) | CODE |
| LOW | …p/models/concerns/priority_activity_message_handler.rb | 20 | def build_priority_change_content(user_name, old_priority = nil, new_priority = nil) | CODE |
| LOW | app/models/concerns/label_activity_message_handler.rb | 14 | def create_label_change_activity(change_type, user_name, labels = []) | CODE |
| LOW | app/models/concerns/sso_authenticatable.rb | 11 | def invalidate_sso_auth_token(token) | CODE |
| LOW | app/models/concerns/sso_authenticatable.rb | 33 | def sso_auth_token_impersonator_id(token) | CODE |
| LOW | app/models/concerns/sso_authenticatable.rb | 37 | def generate_sso_link_with_impersonation(impersonated_by) | CODE |
| LOW | app/models/concerns/json_schema_validator.rb | 89 | def get_name_from_data_pointer(error) | CODE |
| LOW | app/models/concerns/team_activity_message_handler.rb | 6 | def create_team_change_activity(user_name) | CODE |
| LOW | app/models/concerns/cache_keys.rb | 39 | def update_cache_key_for_account(account_id, key) | CODE |
| LOW | app/mailboxes/mailbox_helper.rb | 43 | def process_regular_attachments(attachments) | CODE |
| LOW | app/mailboxes/mailbox_helper.rb | 55 | def process_inline_attachments(attachments) | CODE |
| LOW | app/mailboxes/mailbox_helper.rb | 67 | def embed_inline_image_source(mail_attachment) | CODE |
| LOW | app/mailboxes/mailbox_helper.rb | 75 | def embed_plain_text_email_with_inline_image(mail_attachment) | CODE |
| LOW | app/mailboxes/mailbox_sanitizer.rb | 6 | def sanitized_message_attributes(source_id) | CODE |
| 595 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | .bundler-audit.yml | 21 | - CVE-2026-33176 | COMMENT |
| LOW | app/mailers/references_header_builder.rb | 1 | # Builds RFC 5322 compliant References headers for email threading | COMMENT |
| LOW | app/models/macro.rb | 1 | # == Schema Information | COMMENT |
| LOW | app/models/note.rb | 1 | # == Schema Information | COMMENT |
| LOW | app/models/custom_attribute_definition.rb | 1 | # == Schema Information | COMMENT |
| LOW | app/models/data_import_error.rb | 1 | # == Schema Information | COMMENT |
| LOW | app/models/related_category.rb | 1 | # == Schema Information | COMMENT |
| LOW | app/models/account.rb | 1 | # == Schema Information | COMMENT |
| LOW | app/models/data_import.rb | 1 | # == Schema Information | COMMENT |
| LOW | app/models/data_import.rb | 21 | # status :integer default("pending"), not null | COMMENT |
| LOW | app/models/article.rb | 1 | # == Schema Information | COMMENT |
| LOW | app/models/article.rb | 21 | # author_id :bigint | COMMENT |
| LOW | app/models/category.rb | 1 | # == Schema Information | COMMENT |
| LOW | app/models/email_template.rb | 1 | # == Schema Information | COMMENT |
| LOW | app/models/platform_app_permissible.rb | 1 | # == Schema Information | COMMENT |
| LOW | app/models/contact.rb | 1 | # rubocop:disable Layout/LineLength | COMMENT |
| LOW | app/models/contact.rb | 21 | # created_at :datetime not null | COMMENT |
| LOW | app/models/user_session.rb | 1 | # == Schema Information | COMMENT |
| LOW | app/models/automation_rule_pending_execution.rb | 1 | # == Schema Information | COMMENT |
| LOW | app/models/automation_rule_pending_execution.rb | 81 | COMMENT | |
| LOW | app/models/assignment_policy.rb | 1 | # == Schema Information | COMMENT |
| LOW | app/models/mention.rb | 1 | # == Schema Information | COMMENT |
| LOW | app/models/csat_survey_response.rb | 1 | # == Schema Information | COMMENT |
| LOW | app/models/inbox_assignment_policy.rb | 1 | # == Schema Information | COMMENT |
| LOW | app/models/canned_response.rb | 1 | # == Schema Information | COMMENT |
| LOW | app/models/label.rb | 1 | # == Schema Information | COMMENT |
| LOW | app/models/inbox.rb | 1 | # frozen_string_literal: true | COMMENT |
| LOW | app/models/inbox.rb | 21 | # out_of_office_message :string | COMMENT |
| LOW | app/models/agent_bot.rb | 1 | # == Schema Information | COMMENT |
| LOW | app/models/notification_subscription.rb | 1 | # == Schema Information | COMMENT |
| LOW | app/models/platform_banner.rb | 1 | # == Schema Information | COMMENT |
| LOW | app/models/campaign.rb | 1 | # == Schema Information | COMMENT |
| LOW | app/models/campaign.rb | 21 | # account_id :bigint not null | COMMENT |
| LOW | app/models/data_import_mapping.rb | 1 | # == Schema Information | COMMENT |
| LOW | app/models/dashboard_app.rb | 1 | # == Schema Information | COMMENT |
| LOW | app/models/account_user.rb | 1 | # == Schema Information | COMMENT |
| LOW | app/models/attachment.rb | 1 | # == Schema Information | COMMENT |
| LOW | app/models/message.rb | 1 | # == Schema Information | COMMENT |
| LOW | app/models/message.rb | 21 | # inbox_id :integer not null | COMMENT |
| LOW | app/models/team.rb | 1 | # == Schema Information | COMMENT |
| LOW | app/models/reporting_events_rollup.rb | 1 | # == Schema Information | COMMENT |
| LOW | app/models/notification.rb | 1 | # == Schema Information | COMMENT |
| LOW | app/models/folder.rb | 1 | # == Schema Information | COMMENT |
| LOW | app/models/custom_filter.rb | 1 | # == Schema Information | COMMENT |
| LOW | app/models/conversation.rb | 1 | # == Schema Information | COMMENT |
| LOW | app/models/conversation.rb | 21 | # waiting_since :datetime | COMMENT |
| LOW | app/models/conversation.rb | 41 | # index_conversations_on_campaign_id (campaign_id) | COMMENT |
| LOW | app/models/super_admin.rb | 1 | # == Schema Information | COMMENT |
| LOW | app/models/super_admin.rb | 21 | # otp_backup_codes :text | COMMENT |
| LOW | app/models/super_admin.rb | 41 | # index_users_on_otp_required_for_login (otp_required_for_login) | COMMENT |
| LOW | app/models/automation_rule.rb | 1 | # == Schema Information | COMMENT |
| LOW | app/models/company.rb | 1 | # == Schema Information | COMMENT |
| LOW | app/models/portal.rb | 1 | # == Schema Information | COMMENT |
| LOW | app/models/notification_setting.rb | 1 | # == Schema Information | COMMENT |
| LOW | app/models/agent_bot_inbox.rb | 1 | # == Schema Information | COMMENT |
| LOW | app/models/installation_config.rb | 1 | # == Schema Information | COMMENT |
| LOW | app/models/contact_inbox.rb | 1 | # == Schema Information | COMMENT |
| LOW | app/models/working_hour.rb | 1 | # == Schema Information | COMMENT |
| LOW | app/models/platform_app.rb | 1 | # == Schema Information | COMMENT |
| LOW | app/models/webhook.rb | 1 | # == Schema Information | COMMENT |
| 261 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | .eslintrc.js | 129 | input: ['placeholder'], | CODE |
| LOW | app/builders/messages/facebook/message_builder.rb | 136 | name = result['name'].presence || [result['first_name'], result['last_name']].compact_blank.join(' ').presence || 'J | CODE |
| LOW | app/javascript/widget/components/Form/PhoneInput.vue | 197 | :placeholder="placeholder" | CODE |
| LOW | app/javascript/superadmin/commandBar.spec.js | 23 | command('Acme Corp', { href: '/super_admin/accounts/7' }), | CODE |
| LOW | app/javascript/superadmin/commandBar.spec.js | 106 | expect(visible()).toEqual(['Acme Corp']); | CODE |
| LOW | app/javascript/superadmin/commandBar.spec.js | 107 | expect(selected()).toBe('Acme Corp'); | CODE |
| LOW | app/javascript/superadmin/commandBar.spec.js | 134 | expect(visible()).toEqual(['Acme Corp']); | CODE |
| LOW | app/javascript/superadmin/commandBar.spec.js | 142 | expect(visible()).toContain('Acme Corp'); | CODE |
| LOW | app/javascript/shared/components/GreetingsEditor.vue | 28 | :placeholder="placeholder" | CODE |
| LOW | app/javascript/shared/components/GreetingsEditor.vue | 40 | :placeholder="placeholder" | CODE |
| LOW | app/javascript/shared/components/ResizableTextArea.vue | 171 | :placeholder="placeholder" | CODE |
| LOW | app/javascript/shared/components/TextArea.vue | 54 | :placeholder="placeholder" | CODE |
| LOW | …posables/spec/useContactConversationNavigation.spec.js | 67 | meta: { sender: { id: contactId, name: 'Jane Doe' } }, | CODE |
| LOW | …posables/spec/useContactConversationNavigation.spec.js | 139 | appliedContactFilter.value = { id: 7, name: 'Jane Doe' }; | CODE |
| LOW | …posables/spec/useContactConversationNavigation.spec.js | 196 | { id: 7, name: 'Jane Doe' }, | CODE |
| LOW | …posables/spec/useContactConversationNavigation.spec.js | 209 | { id: 7, name: 'Jane Doe' }, | CODE |
| LOW | …posables/spec/useContactConversationNavigation.spec.js | 226 | appliedContactFilter.value = { id: 7, name: 'Jane Doe' }; | CODE |
| LOW | …posables/spec/useContactConversationNavigation.spec.js | 246 | appliedContactFilter.value = { id: 7, name: 'Jane Doe' }; | CODE |
| LOW | …posables/spec/useContactConversationNavigation.spec.js | 267 | appliedContactFilter.value = { id: 7, name: 'Jane Doe' }; | CODE |
| LOW | …posables/spec/useContactConversationNavigation.spec.js | 281 | appliedContactFilter.value = { id: 7, name: 'Jane Doe' }; | CODE |
| LOW | …posables/spec/useContactConversationNavigation.spec.js | 294 | appliedContactFilter.value = { id: 7, name: 'Jane Doe' }; | CODE |
| LOW | …posables/spec/useContactConversationNavigation.spec.js | 309 | appliedContactFilter.value = { id: 7, name: 'Jane Doe' }; | CODE |
| LOW | …posables/spec/useContactConversationNavigation.spec.js | 324 | appliedContactFilter.value = { id: 7, name: 'Jane Doe' }; | CODE |
| LOW | …avascript/dashboard/composables/spec/useMacros.spec.js | 98 | available_name: 'John Doe', | CODE |
| LOW | …avascript/dashboard/composables/spec/useMacros.spec.js | 99 | name: 'John Doe', | CODE |
| LOW | …script/dashboard/composables/commands/spec/fixtures.js | 9 | available_name: 'John Doe', | CODE |
| LOW | …script/dashboard/composables/commands/spec/fixtures.js | 10 | name: 'John Doe', | CODE |
| LOW | …script/dashboard/composables/commands/spec/fixtures.js | 39 | available_name: 'John Doe', | CODE |
| LOW | …script/dashboard/composables/commands/spec/fixtures.js | 40 | name: 'John Doe', | CODE |
| LOW | …script/dashboard/composables/commands/spec/fixtures.js | 78 | name: 'John Doe', | CODE |
| LOW | …script/dashboard/composables/commands/spec/fixtures.js | 79 | available_name: 'John Doe', | CODE |
| LOW | …script/dashboard/components-next/taginput/TagInput.vue | 235 | :placeholder="placeholder" | CODE |
| LOW | …components-next/captain/assistant/AddNewRulesInput.vue | 43 | :placeholder="placeholder" | CODE |
| LOW | …nts-next/captain/assistant/PlaygroundTestSetup.spec.js | 383 | expect(knowledgeField.props('placeholder')).toBe( | CODE |
| LOW | …omponents-next/captain/assistant/AddNewRulesDialog.vue | 65 | :placeholder="placeholder" | CODE |
| LOW | …p/javascript/dashboard/components-next/input/Input.vue | 132 | :placeholder="placeholder" | CODE |
| LOW | …components-next/Contacts/ContactsForm/ContactsForm.vue | 216 | // Example: firstName="John", lastName="Doe" → name="John Doe" | COMMENT |
| LOW | …omponents-next/Contacts/ContactsForm/story/fixtures.js | 3 | name: 'John Doe', | CODE |
| LOW | …omponents-next/Contacts/ContactsCard/story/fixtures.js | 9 | name: 'John Doe', | CODE |
| LOW | …mponents-next/message/stories/MessageBubbles.story.vue | 23 | name: 'John Doe', | CODE |
| LOW | …onents-next/message/stories/InstagramBubbles.story.vue | 23 | name: 'John Doe', | CODE |
| LOW | …components-next/message/stories/MediaBubbles.story.vue | 23 | name: 'John Doe', | CODE |
| LOW | …s-next/message/forward/specs/ForwardEmailPanel.spec.js | 71 | const contact = { name: 'Jane Doe', email: 'jane@example.com' }; | CODE |
| LOW | …ts-next/NewConversation/components/RecipientsInput.vue | 42 | :placeholder="placeholder" | CODE |
| LOW | …NewConversation/components/specs/MessageEditor.spec.js | 8 | props: ['placeholder', 'modelValue'], | CODE |
| LOW | …NewConversation/components/specs/MessageEditor.spec.js | 9 | template: '<div class="editor-stub" :data-placeholder="placeholder" />', | CODE |
| LOW | …ents-next/NewConversation/components/story/fixtures.js | 166 | name: 'John Doe', | CODE |
| LOW | …sation/helpers/specs/composeConversationHelper.spec.js | 11 | name: 'John Doe', | CODE |
| LOW | …sation/helpers/specs/composeConversationHelper.spec.js | 49 | ).toBe('John Doe'); | CODE |
| LOW | …sation/helpers/specs/composeConversationHelper.spec.js | 364 | name: 'John Doe', | CODE |
| LOW | …sation/helpers/specs/composeConversationHelper.spec.js | 380 | name: 'John Doe', | CODE |
| LOW | …sation/helpers/specs/composeConversationHelper.spec.js | 443 | name: 'John Doe', | CODE |
| LOW | …sation/helpers/specs/composeConversationHelper.spec.js | 450 | name: 'Jane Doe', | CODE |
| LOW | …sation/helpers/specs/composeConversationHelper.spec.js | 474 | name: 'John Doe', | CODE |
| LOW | …sation/helpers/specs/composeConversationHelper.spec.js | 510 | name: 'John Doe', | CODE |
| LOW | …sation/helpers/specs/composeConversationHelper.spec.js | 534 | name: 'John Doe', | CODE |
| LOW | …-next/template-preview/templates/whatsapp-templates.js | 367 | body_text: [['John', '123 Main St', 'support@telco.com']], | CODE |
| LOW | …dashboard/components-next/inline-input/InlineInput.vue | 116 | :placeholder="placeholder" | CODE |
| LOW | …script/dashboard/components-next/textarea/TextArea.vue | 170 | :placeholder="placeholder" | CODE |
| LOW | …/AssignmentPolicy/components/story/DataTable.story.vue | 28 | name: 'John Doe', | CODE |
| 232 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | swagger/swagger.json | 6413 | "api_key": "your-api-key", | CODE |
| HIGH | swagger/swagger.json | 6433 | "api_key": "your-api-key", | CODE |
| HIGH | swagger/swagger.json | 6684 | "api_key": "your-api-key", | CODE |
| HIGH | swagger/swagger.json | 6703 | "api_key": "your-api-key", | CODE |
| HIGH | swagger/swagger.json | 14693 | "example": "your-api-key" | CODE |
| HIGH | swagger/swagger.json | 14707 | "api_key": "your-api-key", | CODE |
| HIGH | swagger/swagger.json | 14755 | "example": "your-api-key" | CODE |
| HIGH | swagger/swagger.json | 14759 | "api_key": "your-api-key" | CODE |
| HIGH | swagger/swagger.json | 15074 | "example": "your-api-key" | CODE |
| HIGH | swagger/swagger.json | 15088 | "api_key": "your-api-key", | CODE |
| HIGH | swagger/swagger.json | 15108 | "api_key": "your-api-key", | CODE |
| HIGH | swagger/paths/application/inboxes/update.yml | 149 | api_key: your-api-key | CODE |
| HIGH | swagger/paths/application/inboxes/update.yml | 164 | api_key: your-api-key | CODE |
| HIGH | swagger/paths/application/inboxes/index.yml | 149 | api_key: your-api-key | CODE |
| HIGH | swagger/paths/application/inboxes/index.yml | 165 | api_key: your-api-key | CODE |
| HIGH | swagger/tag_groups/other_swagger.json | 4051 | "example": "your-api-key" | CODE |
| HIGH | swagger/tag_groups/other_swagger.json | 4065 | "api_key": "your-api-key", | CODE |
| HIGH | swagger/tag_groups/other_swagger.json | 4113 | "example": "your-api-key" | CODE |
| HIGH | swagger/tag_groups/other_swagger.json | 4117 | "api_key": "your-api-key" | CODE |
| HIGH | swagger/tag_groups/other_swagger.json | 4432 | "example": "your-api-key" | CODE |
| HIGH | swagger/tag_groups/other_swagger.json | 4446 | "api_key": "your-api-key", | CODE |
| HIGH | swagger/tag_groups/other_swagger.json | 4466 | "api_key": "your-api-key", | CODE |
| HIGH | swagger/tag_groups/application_swagger.json | 4816 | "api_key": "your-api-key", | CODE |
| HIGH | swagger/tag_groups/application_swagger.json | 4836 | "api_key": "your-api-key", | CODE |
| HIGH | swagger/tag_groups/application_swagger.json | 5087 | "api_key": "your-api-key", | CODE |
| HIGH | swagger/tag_groups/application_swagger.json | 5106 | "api_key": "your-api-key", | CODE |
| HIGH | swagger/tag_groups/application_swagger.json | 13060 | "example": "your-api-key" | CODE |
| HIGH | swagger/tag_groups/application_swagger.json | 13074 | "api_key": "your-api-key", | CODE |
| HIGH | swagger/tag_groups/application_swagger.json | 13122 | "example": "your-api-key" | CODE |
| HIGH | swagger/tag_groups/application_swagger.json | 13126 | "api_key": "your-api-key" | CODE |
| HIGH | swagger/tag_groups/application_swagger.json | 13441 | "example": "your-api-key" | CODE |
| HIGH | swagger/tag_groups/application_swagger.json | 13455 | "api_key": "your-api-key", | CODE |
| HIGH | swagger/tag_groups/application_swagger.json | 13475 | "api_key": "your-api-key", | CODE |
| HIGH | swagger/tag_groups/platform_swagger.json | 4942 | "example": "your-api-key" | CODE |
| HIGH | swagger/tag_groups/platform_swagger.json | 4956 | "api_key": "your-api-key", | CODE |
| HIGH | swagger/tag_groups/platform_swagger.json | 5004 | "example": "your-api-key" | CODE |
| HIGH | swagger/tag_groups/platform_swagger.json | 5008 | "api_key": "your-api-key" | CODE |
| HIGH | swagger/tag_groups/platform_swagger.json | 5323 | "example": "your-api-key" | CODE |
| HIGH | swagger/tag_groups/platform_swagger.json | 5337 | "api_key": "your-api-key", | CODE |
| HIGH | swagger/tag_groups/platform_swagger.json | 5357 | "api_key": "your-api-key", | CODE |
| HIGH | swagger/tag_groups/client_swagger.json | 4636 | "example": "your-api-key" | CODE |
| HIGH | swagger/tag_groups/client_swagger.json | 4650 | "api_key": "your-api-key", | CODE |
| HIGH | swagger/tag_groups/client_swagger.json | 4698 | "example": "your-api-key" | CODE |
| HIGH | swagger/tag_groups/client_swagger.json | 4702 | "api_key": "your-api-key" | CODE |
| HIGH | swagger/tag_groups/client_swagger.json | 5017 | "example": "your-api-key" | CODE |
| HIGH | swagger/tag_groups/client_swagger.json | 5031 | "api_key": "your-api-key", | CODE |
| HIGH | swagger/tag_groups/client_swagger.json | 5051 | "api_key": "your-api-key", | CODE |
| HIGH | …/request/inbox/channels/update_sms_channel_payload.yml | 12 | api_key: your-api-key | CODE |
| HIGH | …est/inbox/channels/update_whatsapp_channel_payload.yml | 20 | example: your-api-key | CODE |
| HIGH | …est/inbox/channels/update_whatsapp_channel_payload.yml | 30 | api_key: your-api-key | CODE |
| HIGH | …est/inbox/channels/create_whatsapp_channel_payload.yml | 34 | example: your-api-key | CODE |
| HIGH | …est/inbox/channels/create_whatsapp_channel_payload.yml | 44 | api_key: your-api-key | CODE |
| HIGH | …est/inbox/channels/create_whatsapp_channel_payload.yml | 78 | example: your-api-key | CODE |
| HIGH | …est/inbox/channels/create_whatsapp_channel_payload.yml | 80 | api_key: your-api-key | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | app/mailers/references_header_builder.rb | 3 | # This module provides functionality to construct proper References headers | COMMENT |
| MEDIUM | app/models/concerns/json_schema_validator.rb | 1 | # This file defines a custom validator class `JsonSchemaValidator` for validating a JSON object against a schema. | COMMENT |
| MEDIUM | app/models/concerns/json_schema_validator.rb | 43 | # Create a JSONSchemer instance using the schema | COMMENT |
| MEDIUM | app/helpers/data_helper.rb | 2 | # This module contains helper methods for converting between different data types, | COMMENT |
| MEDIUM | …rprise/app/helpers/captain/chat_generation_recorder.rb | 10 | # Create a generation span with model and token info for Langfuse cost calculation. | COMMENT |
| MEDIUM | …vices/internal/accounts/internal_attributes_service.rb | 23 | # Create a new hash to avoid modifying the original | COMMENT |
| MEDIUM | config/markdown_embeds.yml | 3 | # This file defines patterns and templates for converting URLs into embedded content | COMMENT |
| MEDIUM | config/installation_config.yml | 1 | # This file contains all the installation wide configuration which controls various settings in Chatwoot | COMMENT |
| MEDIUM | config/initializers/feature_policy.rb | 1 | # Define an application-wide HTTP feature policy. For further | COMMENT |
| MEDIUM | config/initializers/wrap_parameters.rb | 3 | # This file contains settings for ActionController::ParamsWrapper which | COMMENT |
| MEDIUM | config/initializers/permissions_policy.rb | 1 | # Define an application-wide HTTP permissions policy. For further | COMMENT |
| MEDIUM | config/initializers/content_security_policy.rb | 3 | # Define an application-wide content security policy | COMMENT |
| MEDIUM | config/initializers/git_sha.rb | 1 | # Define a method to fetch the git commit hash | COMMENT |
| MEDIUM | …terprise/models/concerns/captain_tools_helpers_spec.rb | 4 | # Create a test class that includes the concern | COMMENT |
| MEDIUM | …nterprise/policies/csat_survey_response_policy_spec.rb | 11 | # Create a custom role with report_manage permission | COMMENT |
| MEDIUM | spec/enterprise/policies/article_policy_spec.rb | 13 | # Create a custom role with knowledge_base_manage permission | COMMENT |
| MEDIUM | spec/enterprise/policies/report_policy_spec.rb | 11 | # Create a custom role with report_manage permission | COMMENT |
| MEDIUM | spec/enterprise/policies/portal_policy_spec.rb | 11 | # Create a custom role with knowledge_base_manage permission | COMMENT |
| MEDIUM | spec/enterprise/policies/category_policy_spec.rb | 12 | # Create a custom role with knowledge_base_manage permission | COMMENT |
| MEDIUM | spec/enterprise/lib/captain/base_task_service_spec.rb | 16 | # Create a concrete test service class with enterprise module prepended | COMMENT |
| MEDIUM | spec/enterprise/lib/captain/prompt_renderer_spec.rb | 78 | # Create a controlled snippet to decouple from real snippet content | COMMENT |
| MEDIUM | …trollers/enterprise/api/v1/accounts_controller_spec.rb | 523 | # Create the installation config for cloud environment | COMMENT |
| MEDIUM | …terprise/api/v1/accounts/categories_controller_spec.rb | 12 | # Create a custom role with knowledge_base_manage permission | COMMENT |
| MEDIUM | …enterprise/api/v1/accounts/articles_controller_spec.rb | 13 | # Create a custom role with knowledge_base_manage permission | COMMENT |
| MEDIUM | …/enterprise/api/v1/accounts/portals_controller_spec.rb | 11 | # Create a custom role with knowledge_base_manage permission | COMMENT |
| MEDIUM | …/v1/accounts/contacts/conversations_controller_spec.rb | 25 | # Create a conversation assigned to this agent | COMMENT |
| MEDIUM | …/v1/accounts/contacts/conversations_controller_spec.rb | 65 | # Create the conversations | COMMENT |
| MEDIUM | …/enterprise/api/v2/accounts/reports_controller_spec.rb | 9 | # Create a custom role with report_manage permission | COMMENT |
| MEDIUM | …llers/api/v1/accounts/conversations_controller_spec.rb | 168 | # Create an event for a different conversation (should not be included) | COMMENT |
| MEDIUM | …captain/tools/copilot/get_conversation_service_spec.rb | 117 | # Create a regular message | COMMENT |
| MEDIUM | …captain/tools/copilot/get_conversation_service_spec.rb | 124 | # Create a private message | COMMENT |
| MEDIUM | …rprise/conversations/permission_filter_service_spec.rb | 53 | # Create a new isolated test environment | COMMENT |
| MEDIUM | …rprise/conversations/permission_filter_service_spec.rb | 90 | # Create a new isolated test environment | COMMENT |
| MEDIUM | …rprise/conversations/permission_filter_service_spec.rb | 99 | # Create a custom role with only the conversation_participating_manage permission | COMMENT |
| MEDIUM | …rprise/conversations/permission_filter_service_spec.rb | 130 | # Create a new isolated test environment | COMMENT |
| MEDIUM | …rprise/conversations/permission_filter_service_spec.rb | 139 | # Create a custom role with only the conversation_unassigned_manage permission | COMMENT |
| MEDIUM | …rprise/conversations/permission_filter_service_spec.rb | 174 | # Create a new isolated test environment | COMMENT |
| MEDIUM | …rprise/conversations/permission_filter_service_spec.rb | 183 | # Create a custom role with both participating and unassigned permissions | COMMENT |
| MEDIUM | …enterprise/billing/handle_stripe_event_service_spec.rb | 160 | # Create a double for the service | COMMENT |
| MEDIUM | …ec/builders/contact_inbox_with_contact_builder_spec.rb | 117 | # Create a Facebook page inbox with a contact using the same source_id | COMMENT |
| MEDIUM | …ec/builders/contact_inbox_with_contact_builder_spec.rb | 122 | # Create an Instagram inbox | COMMENT |
| MEDIUM⚡ | spec/models/contact_spec.rb | 165 | # Create a lead contact with only name | COMMENT |
| MEDIUM⚡ | spec/models/contact_spec.rb | 169 | # Create a customer contact | COMMENT |
| MEDIUM⚡ | spec/models/contact_spec.rb | 173 | # Create a visitor contact | COMMENT |
| MEDIUM | spec/models/concerns/json_schema_validator_spec.rb | 24 | # Create a simple test model for validation | COMMENT |
| MEDIUM | spec/mailboxes/application_mailbox_spec.rb | 76 | # Create a BCC-only email scenario | COMMENT |
| MEDIUM | spec/support/csv_spec_helpers.rb | 5 | # Create a temporary file | COMMENT |
| MEDIUM | spec/lib/captain/base_task_service_spec.rb | 8 | # Create a concrete test service class since BaseTaskService is abstract | COMMENT |
| MEDIUM | spec/jobs/internal/process_stale_contacts_job_spec.rb | 17 | # Create an account and set its ID to match today's pattern | COMMENT |
| MEDIUM | …llers/api/v1/accounts/conversations_controller_spec.rb | 979 | # Create a new message after agent_last_seen_at (unread message) | COMMENT |
| MEDIUM | …controllers/api/v2/accounts/reports_controller_spec.rb | 154 | # Create a resolution event right at timezone boundary | COMMENT |
| MEDIUM | spec/listeners/automation_rule_listener_old_spec.rb | 1 | # This file is deprecated, please don't add any additional specs or modifications in this | COMMENT |
| MEDIUM | spec/listeners/reporting_event_listener_spec.rb | 339 | # Create a resolved event first | COMMENT |
| MEDIUM | spec/listeners/automation_rule_listener_labels_spec.rb | 45 | automation_rule # Create the automation rule | CODE |
| MEDIUM | spec/listeners/automation_rule_listener_labels_spec.rb | 67 | automation_rule # Create the automation rule | CODE |
| MEDIUM | spec/listeners/automation_rule_listener_labels_spec.rb | 107 | automation_rule # Create the automation rule | CODE |
| MEDIUM | spec/listeners/automation_rule_listener_labels_spec.rb | 125 | automation_rule # Create the automation rule | CODE |
| MEDIUM | spec/listeners/automation_rule_listener_labels_spec.rb | 147 | automation_rule # Create the automation rule | CODE |
| MEDIUM | spec/listeners/automation_rule_listener_labels_spec.rb | 188 | automation_rule # Create the automation rule | CODE |
| MEDIUM | spec/listeners/automation_rule_listener_labels_spec.rb | 228 | automation_rule # Create the automation rule | CODE |
| 21 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | …script/dashboard/helper/specs/snoozeDateParser.spec.js | 121 | // ─── Regression Test Matrix ─────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …script/dashboard/helper/specs/snoozeDateParser.spec.js | 544 | // ─── parseDateFromText direct tests ────────────────────────────────────────── | COMMENT |
| MEDIUM | …script/dashboard/helper/specs/snoozeDateParser.spec.js | 1512 | // ─── Multilingual / Localized Input Regressions ───────────────────────────── | COMMENT |
| MEDIUM | …ascript/dashboard/helper/snoozeDateParser/tokenMaps.js | 20 | // ─── Token Maps ────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …ascript/dashboard/helper/snoozeDateParser/tokenMaps.js | 199 | // ─── Unicode / Normalization ──────────────────────────────────────────────── | COMMENT |
| MEDIUM | …ascript/dashboard/helper/snoozeDateParser/tokenMaps.js | 289 | // ─── Utility Functions ────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …ript/dashboard/helper/snoozeDateParser/localization.js | 22 | // ─── English Reference Data ───────────────────────────────────────────────── | COMMENT |
| MEDIUM | …ript/dashboard/helper/snoozeDateParser/localization.js | 156 | // ─── Regex for token replacement ──────────────────────────────────────────── | COMMENT |
| MEDIUM | …ript/dashboard/helper/snoozeDateParser/localization.js | 172 | // ─── Translation Cache ────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …ript/dashboard/helper/snoozeDateParser/localization.js | 275 | // ─── Token Replacement ────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …ript/dashboard/helper/snoozeDateParser/localization.js | 345 | // ─── Main Suggestion Generator ────────────────────────────────────────────── | COMMENT |
| MEDIUM | …javascript/dashboard/helper/snoozeDateParser/parser.js | 48 | // ─── Regex Fragments (derived from maps) ──────────────────────────────────── | COMMENT |
| MEDIUM | …javascript/dashboard/helper/snoozeDateParser/parser.js | 81 | // ─── Pre-compiled Regexes ─────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …javascript/dashboard/helper/snoozeDateParser/parser.js | 198 | // ─── Pattern Matchers ─────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …javascript/dashboard/helper/snoozeDateParser/parser.js | 774 | // ─── Main Parser ──────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | config/routes.rb | 50 | # ---------------------------------- | COMMENT |
| MEDIUM | config/routes.rb | 514 | # ---------------------------------- | COMMENT |
| MEDIUM | config/routes.rb | 648 | # ---------------------------------------------------------------------- | COMMENT |
| MEDIUM | config/routes.rb | 674 | # ---------------------------------------------------------------------- | COMMENT |
| MEDIUM | config/routes.rb | 713 | # ---------------------------------------------------------------------- | COMMENT |
| MEDIUM | config/routes.rb | 721 | # ---------------------------------------------------------------------- | COMMENT |
| MEDIUM | config/routes.rb | 773 | # ---------------------------------------------------------------------- | COMMENT |
| MEDIUM | config/routes.rb | 780 | # ---------------------------------------------------------------------- | COMMENT |
| MEDIUM | config/routes.rb | 845 | # --------------------------------------------------------------------- | COMMENT |
| MEDIUM | config/routes.rb | 850 | # ---------------------------------------------------------------------- | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | app/models/message.rb | 385 | # Check if this is a response from AgentBot or Captain::Assistant | COMMENT |
| LOW | app/models/notification.rb | 172 | # Check if the user has subscribed to the specified type of notification | COMMENT |
| LOW | app/mailboxes/mailbox_inline_attachment_helper.rb | 27 | # Check if CID is referenced in HTML content | COMMENT |
| LOW | …lers/public/api/v1/inboxes/conversations_controller.rb | 16 | # Check if the conversation is already resolved to prevent redundant operations | COMMENT |
| LOW | app/controllers/instagram/callbacks_controller.rb | 6 | # Check if Instagram redirected with an error (user canceled authorization) | COMMENT |
| LOW | app/services/instagram/refresh_oauth_token_service.rb | 27 | # Check if token is still valid | COMMENT |
| LOW | …vices/whatsapp/populate_template_parameters_service.rb | 122 | # Check if text contains WhatsApp rich formatting markers | COMMENT |
| LOW | app/services/whatsapp/incoming_message_base_service.rb | 170 | # Set status to :delivered for echo messages to prevent SendReplyJob from trying to send them | COMMENT |
| LOW | app/services/whatsapp/webhook_setup_service.rb | 59 | # Check if we have a stored PIN for this phone number | COMMENT |
| LOW | …ervices/enterprise/auto_assignment/capacity_service.rb | 11 | # Check if there's a specific limit for this inbox | COMMENT |
| LOW | config/application.rb | 104 | # Check if proper encryption keys are configured | COMMENT |
| LOW | config/environments/production.rb | 94 | # Set this to true and configure the email server for immediate delivery to raise delivery errors. | COMMENT |
| LOW | config/environments/production.rb | 97 | # Set this to appropriate ingress service for which the options are : | COMMENT |
| LOW | config/initializers/mailer.rb | 43 | # Set this to appropriate ingress service for which the options are : | COMMENT |
| LOW | config/initializers/rack_attack.rb | 228 | # Set ENABLE_RACK_ATTACK_WIDGET_API to false to disable all widget throttles (e.g. iframe embeds). | COMMENT |
| LOW⚡ | spec/enterprise/models/sla_event_spec.rb | 69 | # Check if notification is created for the assignee | COMMENT |
| LOW⚡ | spec/enterprise/models/sla_event_spec.rb | 71 | # Check if notification is created for the account admin | COMMENT |
| LOW⚡ | spec/enterprise/models/sla_event_spec.rb | 73 | # Check if notification is created for participant | COMMENT |
| LOW | …enterprise/devise_overrides/session_controller_spec.rb | 74 | # Check if the sign_in event is created | COMMENT |
| LOW | …enterprise/services/sla/business_hours_service_spec.rb | 127 | # Set Saturday to open_all_day (0:00 - 23:59) | COMMENT |
| LOW | spec/builders/v2/report_builder_spec.rb | 280 | metric: nil, # Set metric to nil to test this case | CODE |
| LOW | deployment/setup_20.04.sh | 425 | # Check if this is a conversion from existing deployment | COMMENT |
| LOW | deployment/setup_20.04.sh | 864 | # Check if Redis is installed | COMMENT |
| LOW | deployment/setup_20.04.sh | 999 | # Check if CW_VERSION is 4.0 or above | COMMENT |
| LOW | deployment/setup_20.04.sh | 1111 | # Check if Chatwoot is installed | COMMENT |
| LOW | deployment/setup_20.04.sh | 1205 | # Check if there is newer version of cwctl and upgrade if found | COMMENT |
| LOW | deployment/setup_20.04.sh | 1220 | #Check if pip is not installed, and install it if not | COMMENT |
| LOW | deployment/setup_20.04.sh | 1226 | # Check if packaging library is installed, and install it if not | COMMENT |
| LOW⚡ | rubocop/one_class_per_file.rb | 54 | # Check if we're inside a Rack::Attack class | COMMENT |
| LOW⚡ | rubocop/one_class_per_file.rb | 61 | # Check if the class inherits from StandardError or ends with 'Error' | COMMENT |
| LOW⚡ | rubocop/one_class_per_file.rb | 69 | # Check if any parent node is a module containing 'CustomExceptions' | COMMENT |
| LOW | rubocop/one_class_per_file.rb | 83 | # Check if class name ends with any of these patterns | COMMENT |
| LOW | .github/workflows/logging_percentage_check.yml | 50 | # Check if the percentage is less than 5% | COMMENT |
| LOW | .github/workflows/run_foss_spec.yml | 140 | # Assign spec to this node if: index % total == node_index | COMMENT |
| LOW | lib/redis/redis_keys.rb | 76 | # Check if a message create with same source-id is in progress? | COMMENT |
| LOW | lib/test_data/database_optimizer.rb | 21 | # Set tables to UNLOGGED mode for better write performance | COMMENT |
| LOW | lib/active_storage/migrator.rb | 7 | # Check if services are configured correctly | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | …/javascript/dashboard/i18n/locale/sl/conversation.json | 482 | "DESCRIPTION": "Labels provide an easier way to categorize your conversation. Create some labels like #support-enq | CODE |
| MEDIUM | …/javascript/dashboard/i18n/locale/ur/conversation.json | 482 | "DESCRIPTION": "Labels provide an easier way to categorize your conversation. Create some labels like #support-enq | CODE |
| MEDIUM | …/javascript/dashboard/i18n/locale/uz/conversation.json | 482 | "DESCRIPTION": "Labels provide an easier way to categorize your conversation. Create some labels like #support-enq | CODE |
| MEDIUM | …/javascript/dashboard/i18n/locale/sq/conversation.json | 482 | "DESCRIPTION": "Labels provide an easier way to categorize your conversation. Create some labels like #support-enq | CODE |
| MEDIUM | …/javascript/dashboard/i18n/locale/sv/conversation.json | 482 | "DESCRIPTION": "Labels provide an easier way to categorize your conversation. Create some labels like #support-enq | CODE |
| MEDIUM | …/javascript/dashboard/i18n/locale/am/conversation.json | 482 | "DESCRIPTION": "Labels provide an easier way to categorize your conversation. Create some labels like #support-enq | CODE |
| MEDIUM | …/javascript/dashboard/i18n/locale/no/conversation.json | 482 | "DESCRIPTION": "Labels provide an easier way to categorize your conversation. Create some labels like #support-enq | CODE |
| MEDIUM | …vascript/dashboard/i18n/locale/ur_IN/conversation.json | 482 | "DESCRIPTION": "Labels provide an easier way to categorize your conversation. Create some labels like #support-enq | CODE |
| MEDIUM | …/javascript/dashboard/i18n/locale/tl/conversation.json | 482 | "DESCRIPTION": "Labels provide an easier way to categorize your conversation. Create some labels like #support-enq | CODE |
| MEDIUM | …/javascript/dashboard/i18n/locale/ml/conversation.json | 482 | "DESCRIPTION": "Labels provide an easier way to categorize your conversation. Create some labels like #support-enq | CODE |
| MEDIUM | …/javascript/dashboard/i18n/locale/hr/conversation.json | 482 | "DESCRIPTION": "Labels provide an easier way to categorize your conversation. Create some labels like #support-enq | CODE |
| MEDIUM | …/javascript/dashboard/i18n/locale/nl/conversation.json | 482 | "DESCRIPTION": "Labels provide an easier way to categorize your conversation. Create some labels like #support-enq | CODE |
| MEDIUM | …/javascript/dashboard/i18n/locale/bg/conversation.json | 482 | "DESCRIPTION": "Labels provide an easier way to categorize your conversation. Create some labels like #support-enq | CODE |
| MEDIUM | …/javascript/dashboard/i18n/locale/hi/conversation.json | 482 | "DESCRIPTION": "Labels provide an easier way to categorize your conversation. Create some labels like #support-enq | CODE |
| MEDIUM | …/javascript/dashboard/i18n/locale/ka/conversation.json | 482 | "DESCRIPTION": "Labels provide an easier way to categorize your conversation. Create some labels like #support-enq | CODE |
| MEDIUM | …/javascript/dashboard/i18n/locale/fi/conversation.json | 482 | "DESCRIPTION": "Labels provide an easier way to categorize your conversation. Create some labels like #support-enq | CODE |
| MEDIUM | …/javascript/dashboard/i18n/locale/en/conversation.json | 486 | "DESCRIPTION": "Labels provide an easier way to categorize your conversation. Create some labels like #support-enq | CODE |
| MEDIUM | …/javascript/dashboard/i18n/locale/ta/conversation.json | 482 | "DESCRIPTION": "Labels provide an easier way to categorize your conversation. Create some labels like #support-enq | CODE |
| MEDIUM | …ise/app/services/captain/llm/system_prompts_service.rb | 109 | - Do not try to end the conversation explicitly (e.g., avoid phrases like "Talk soon!" or "Let me know if you ne | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | app/builders/messages/instagram/base_message_builder.rb | 98 | # Therefore, we need to check if the message already exists before creating it. | COMMENT |
| LOW⚡ | app/javascript/dashboard/composables/useImageZoom.js | 68 | // Step 1: Calculate offset from center | COMMENT |
| LOW⚡ | app/javascript/dashboard/composables/useImageZoom.js | 71 | // Step 2: Apply rotation transformation | COMMENT |
| LOW⚡ | app/javascript/dashboard/composables/useImageZoom.js | 78 | // Step 3: Convert to percentage coordinates | COMMENT |
| LOW | …ipt/dashboard/components/widgets/WootWriter/Editor.vue | 480 | // these drafts can also have a signature, so we need to check if the body is empty | COMMENT |
| LOW | …d/store/modules/conversations/helpers/filterHelpers.js | 435 | // Step 1: Group consecutive AND conditions into logical units | COMMENT |
| LOW⚡ | …d/store/modules/conversations/helpers/filterHelpers.js | 462 | // Step 2: Add the final AND group that wasn't followed by an OR | COMMENT |
| LOW⚡ | …d/store/modules/conversations/helpers/filterHelpers.js | 471 | // Step 3: Combine all AND groups with OR operators | COMMENT |
| LOW⚡ | app/services/twilio/csat_template_service.rb | 20 | # Step 1: Create template | COMMENT |
| LOW⚡ | app/services/twilio/csat_template_service.rb | 25 | # Step 2: Submit for WhatsApp approval using the approval_create URL | COMMENT |
| LOW | spec/services/whatsapp/facebook_api_client_spec.rb | 193 | # Step 1: Subscribe app to WABA with the default field list (`calls` is added only when voice is enabled). | COMMENT |
| LOW | spec/services/whatsapp/facebook_api_client_spec.rb | 206 | # Step 2: Override callback at phone number level | COMMENT |
| LOW⚡ | lib/integrations/slack/channel_builder.rb | 33 | # Step 1: Fetch all private channels in one call (expect very few) | COMMENT |
| LOW⚡ | lib/integrations/slack/channel_builder.rb | 37 | # Step 2: Fetch public channels with pagination | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | app/javascript/dashboard/composables/useImageZoom.js | 68 | // Step 1: Calculate offset from center | COMMENT |
| LOW⚡ | app/javascript/dashboard/composables/useImageZoom.js | 71 | // Step 2: Apply rotation transformation | COMMENT |
| LOW⚡ | app/javascript/dashboard/composables/useImageZoom.js | 78 | // Step 3: Convert to percentage coordinates | COMMENT |
| LOW | …d/store/modules/conversations/helpers/filterHelpers.js | 435 | // Step 1: Group consecutive AND conditions into logical units | COMMENT |
| LOW⚡ | …d/store/modules/conversations/helpers/filterHelpers.js | 462 | // Step 2: Add the final AND group that wasn't followed by an OR | COMMENT |
| LOW⚡ | …d/store/modules/conversations/helpers/filterHelpers.js | 471 | // Step 3: Combine all AND groups with OR operators | COMMENT |
| LOW⚡ | app/services/twilio/csat_template_service.rb | 20 | # Step 1: Create template | COMMENT |
| LOW⚡ | app/services/twilio/csat_template_service.rb | 25 | # Step 2: Submit for WhatsApp approval using the approval_create URL | COMMENT |
| LOW | spec/services/whatsapp/facebook_api_client_spec.rb | 193 | # Step 1: Subscribe app to WABA with the default field list (`calls` is added only when voice is enabled). | COMMENT |
| LOW | spec/services/whatsapp/facebook_api_client_spec.rb | 206 | # Step 2: Override callback at phone number level | COMMENT |
| LOW⚡ | lib/integrations/slack/channel_builder.rb | 33 | # Step 1: Fetch all private channels in one call (expect very few) | COMMENT |
| LOW⚡ | lib/integrations/slack/channel_builder.rb | 37 | # Step 2: Fetch public channels with pagination | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | …ollers/api/v1/accounts/captain/documents_controller.rb | 60 | @documents = Current.account.captain_documents.with_attached_pdf_file.with_attached_markdown_file.includes(:assistan | CODE |
| CRITICAL | spec/services/twilio/incoming_message_service_spec.rb | 328 | expect(conversation.reload.messages.last.attachments.map(&:file_type)).to contain_exactly('image', 'image') | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | enterprise/app/models/captain/assistant.rb | 8 | # guardrails :jsonb | COMMENT |
| MEDIUM | enterprise/app/helpers/captain/chat_helper.rb | 111 | # Ensures all LLM calls and tool executions within an agentic loop | COMMENT |
| MEDIUM | enterprise/app/services/llm/speech_to_text_service.rb | 40 | # temperature: 0.0 minimises hallucinations on silence / near-silent | COMMENT |
| MEDIUM | lib/captain/base_task_service.rb | 6 | # Sized for a 128,000-token context window | COMMENT |
| MEDIUM | lib/integrations/llm_base_service.rb | 5 | # Sized for a 128,000-token context window | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | app/javascript/shared/components/ResizableTextArea.vue | 78 | // A surprise cursor jump? Definitely not user-friendly. | COMMENT |
| MEDIUM | …script/dashboard/composables/useWhatsappCallSession.js | 401 | // to the override means hangup is robust to a wiped local session. | COMMENT |
| LOW | app/services/crm/leadsquared/processor_service.rb | 65 | # So we just use the update API if we already have a lead ID | COMMENT |
| MEDIUM | app/services/email_templates/db_resolver_service.rb | 33 | # details contain local info which we can leverage in future | COMMENT |
| LOW | enterprise/app/models/applied_sla.rb | 125 | # right now we simply use `CONVERSATION_UPDATED` event to notify the frontend | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | .github/scripts/ghsa_linear_sync.py | 118 | except requests.RequestException: | CODE |
| HIGH | .github/scripts/ghsa_linear_sync.py | 150 | except requests.RequestException: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …routes/dashboard/settings/inbox/channels/Instagram.vue | 24 | // TODO: Handle error type | COMMENT |
| LOW | …rd/routes/dashboard/settings/inbox/channels/Tiktok.vue | 20 | // TODO: Handle error type | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | lib/seeders/reports/report_data_seeder.rb | 10 | # Usage: | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | .github/scripts/ghsa_linear_sync.py | 4 | CODE |