RocketChat/Rocket.Chat · warning
The default value of the setting 'Login Terms' has changed t
Error message
The default value of the setting 'Login Terms' has changed to an empty string. Please review your settings.
What it means
Logged by migration 296 ('Reset the default value of Login Terms setting and replace by empty string'). The old default of Layout_Login_Terms was a hard-coded English terms-of-service/privacy-policy/legal-notice HTML snippet with links to 'terms-of-service', 'privacy-policy' and 'legal-notice'. If the workspace still had exactly that default value, the migration sets both value and packageValue to '' (empty) and warns the admin to review — the login page will no longer show any terms text until new content is provided.
Source
Thrown at apps/meteor/server/startup/migrations/v296.ts:19
import { Settings } from '@rocket.chat/models';
import { SystemLogger } from '../../lib/logger/system';
import { addMigration } from '../../lib/migrations';
import { settings } from '../../settings';
addMigration({
version: 296,
name: 'Reset the default value of Login Terms setting and replace by empty string',
async up() {
const oldLoginTermsValue =
'By proceeding you are agreeing to our <a href="terms-of-service">Terms of Service</a>, <a href="privacy-policy">Privacy Policy</a> and <a href="legal-notice">Legal Notice</a>.';
const loginTermsValue = settings.get('Layout_Login_Terms');
if (loginTermsValue === oldLoginTermsValue) {
// TODO: audit
await Settings.updateOne({ _id: 'Layout_Login_Terms' }, { $set: { value: '', packageValue: '' } });
SystemLogger.warn(`The default value of the setting 'Login Terms' has changed to an empty string. Please review your settings.`);
}
},
});
View on GitHub (pinned to b2c16d5842)
Solutions
- If you need login terms, set Layout_Login_Terms (Admin -> Layout -> Login Terms) to your own HTML immediately after upgrading.
- Use proper hrefs for your actual pages (e.g. /terms-of-service route or external URLs) instead of the old relative defaults.
- If you intended to show no terms, no action is needed — the migration did what you want.
- Pre-upgrade: if the current value is the old default and you depend on it, copy it out before upgrading so you can re-add it afterwards.
Example fix
// before (pre-upgrade default that migration 296 wipes) // Layout_Login_Terms = 'By proceeding you are agreeing to our <a href="terms-of-service">Terms of Service</a> ...' // after: set your own terms post-migration await Settings.updateValueById( 'Layout_Login_Terms', 'By proceeding you agree to our <a href="https://example.com/terms">Terms</a> and <a href="https://example.com/privacy">Privacy Policy</a>.', );
Defensive patterns
Strategy: validation
Validate before calling
// Pre-upgrade: detect the exact old default that migration 296 blanks out
const OLD_DEFAULT = 'By proceeding you are agreeing to our <a href="terms-of-service">Terms of Service</a>, <a href="privacy-policy">Privacy Policy</a> and <a href="legal-notice">Legal Notice</a>.';
const terms = await Settings.getValueById('Layout_Login_Terms');
if (terms === OLD_DEFAULT) {
console.log('Login Terms still at old default — it will be wiped to empty by migration 296. Save your replacement text now.');
} Prevention
- If your organization needs login terms, set an explicit custom Layout_Login_Terms value; migrations only reset the exact old default.
- Point terms links at real URLs (your /terms-of-service route or external site) instead of the legacy relative defaults.
- Re-check the login page layout after every upgrade that touches Layout_* settings.
When it happens
Trigger: Migration 296 runs during startup after upgrade, and settings.get('Layout_Login_Terms') equals the byte-for-byte old default HTML ('By proceeding you are agreeing to our <a href="terms-of-service">Terms of Service</a>, ...'). Only that exact match triggers the reset; any customized value is left untouched and no warning is logged.
Common situations: Upgrading any workspace that never customized the login terms and relied on the built-in English default — common in fresh/low-touch installs. Post-upgrade the login screen silently loses the terms block, which matters for legal/compliance reasons in organizations that treated the default text as their agreement notice.
Related errors
- The value of the setting 'LDAP background synchronization in
- The value of the setting 'CROWD background synchronization i
- The default value of the setting has changed. Please review
- The default value of the custom setting has changed. Please
- UPGRADE NOT SUPPORTED! It seems you're trying to upgrade fr
AI-assisted analysis of RocketChat/Rocket.Chat@b2c16d5842 (2026-08-18).
Data as JSON: /api/errors/8be7967c622fc345.
Report an issue: GitHub.