Cross-Server Setup
When CommandGuard is installed on both the proxy and backend servers, the proxy pushes its allowed command list to each backend via plugin messaging. This feature is called TabSync.
TabSync ensures players see a unified tab-complete list that includes commands from both the proxy and the backend — without having to define proxy commands on every backend.
How TabSync Works
Each layer manages its own commands independently:
- Proxy handles proxy plugin commands (
/server,/hub,/skin...) - Backend handles backend plugin commands (
/home,/spawn...) - TabSync combines both lists on the backend side
Setup
Step 1 — Proxy config
velocity-config.yml (or bungee-config.yml):
is_network: true
tab:
default:
priority: 0
commands:
- "/hub"
- "/server"
- "/skin"
Step 2 — Backend config
config.yml on each backend server:
is_network: true
tab:
default:
priority: 0
commands:
- "/home"
- "/spawn"
# Proxy commands are added automatically via TabSync — no need to list them here
Both sides must have is_network: true. If only one side has it enabled, TabSync will not work.
Reloading After Changes
After editing the proxy config:
/cgv reload
This reloads the config and immediately pushes TabSync to all online players — no relog needed.
After editing a backend config:
/cg reload
Force-Update a Single Player
Push an updated tab-complete list to one player without a full reload:
/cgv updategroup <player> ← proxy
/cg updategroup <player> ← backend
This is useful after manually changing a player's permission group.
tab_sync_delay
On the proxy, TabSync is sent after a short delay when a player connects. The default is 500 ms:
tab_sync_delay: 500
If players connect to slow backend servers and see an incomplete tab list on join, increase this value (e.g. 1000).