-
Notifications
You must be signed in to change notification settings - Fork 0
upload scanning
nChat scans uploaded files for malware when a virus scanner service is available. This page documents the NEXT_PUBLIC_ALLOW_UNSCANNED_UPLOADS flag, its default behavior, and when to enable it.
When a file upload is requested and the virus scanner service is unavailable, nChat rejects the upload with:
Virus scanner unavailable. Please retry in a few minutes.
No file reaches the chat without being scanned. This is the safe default for all deployments.
| Value | Behavior |
|---|---|
false (default) |
Upload rejected when scanner is down. User sees an error message. |
true |
Upload proceeds without scanning. A loud security warning is emitted to the server console and a telemetry event is fired for every skipped scan. |
Set in frontend/.env.example:
# Controls upload behavior when virus scanner is unavailable.
# Default (false): uploads are rejected when scanner is down.
# Set to true only if you accept the risk of unscanned uploads.
NEXT_PUBLIC_ALLOW_UNSCANNED_UPLOADS=falseOnly in environments where a virus scanner will never be present and you accept the security risk:
- Air-gapped deployments without network access to a scanner
- Development/testing environments (use dev auth mode instead where possible)
Never set this to true in a production deployment where users upload untrusted files.
When NEXT_PUBLIC_ALLOW_UNSCANNED_UPLOADS=true and the scanner is unavailable, the server logs:
SECURITY: virus scan skipped for file <fileId>; ALLOW_UNSCANNED_UPLOADS=true
A telemetry event is also posted to /api/telemetry/security-event with event: "virus_scan_skipped". This cannot be disabled β it is part of the Security-Always-Free baseline.
-
frontend/src/services/files/upload.service.tsβ implementation - nself Security-Always-Free Doctrine
nself-chat v0.3.0 | GitHub | Issues | Discussions | Demo
Edit this page | MIT License | Β© 2026
(See π Security section below for 2FA, PIN Lock, and security audits.)
(Search lives in π Reference below.)
- π¬ Advanced Messaging
- π E2EE Setup
- π Search Setup
- π Call Management
- πΊ Live Streaming
- π₯οΈ Screen Sharing
- πΉ Video Calling
- ποΈ Voice Calling
- π± Mobile Optimization
- π§ͺ Testing
- π i18n
- π API Overview
- π Complete Reference
- π» API Examples
- π€ Bot API
- π Auth API
- π GraphQL Schema
- π Deployment Overview
- π³ Docker
- βΈοΈ Kubernetes
- β Helm Charts
- β Production Checklist
- π Production Validation
- π’ Multi-Tenant
- ποΈ Architecture
- π Diagrams
- ποΈ Database Schema
- π Project Structure
- π TypeScript Types
- π SPORT Reference
- π 2FA
- π¬ Messaging
- π Call Management
- π Call State Machine
- π E2EE
- πΊ Live Streaming
- π± Mobile Calls
- π PIN Lock
- π Polls
- π₯οΈ Screen Sharing
- π Search
- π Social Media
- ποΈ Voice Calling
- π Security Overview
- π‘οΈ Security Audit
- β‘ Performance
- π Best Practices
- π 2FA
- π PIN Lock
- π E2EE
- π‘οΈ E2EE Audit
v1.0.0 β’ 2026