Skip to content
Centriu
Centriu Synapse

AI Persona Tenant-Ownership Scoping Automation: Every Tenant, Wearing One Customer's Identity

One customer on Centriu Synapse's shared AI deployment maintains its own branded system-prompt content — the instructions that give its AI agent a specific name, tone, and identity — stored as default files loaded into every conversational turn unless a guard explicitly restricts them. A guard added specifically to scope those files to their owning customer was deleted by an unrelated revert, while the environment variable naming the owning customer stayed configured and unread. Measured directly at the time of the fix: the two safety nets meant to protect every OTHER tenant — a per-tenant database override and a per-tenant override folder on disk — had zero rows and no folder respectively, meaning neither had ever actually been used. In the window between the revert and this fix, every tenant served by this deployment, including the platform's own default operating organization, would have had its AI assistant introduce itself using that other customer's own branded identity instead of its own. The fix restores the guard and, just as importantly, wires the one piece of caller data the guard depends on to actually know which organization is asking — without which the guard would have blocked the branded content even for its rightful, paying owner.
Scoped to one real owner
Fails closed on unresolved identity
Organization and access configuration screen
Every tenant, wearing one customer's identity.

A shared default is a promise that someone will remember to carve out the exception

Storing one customer's branded content as the default that loads for everyone, with a scoping rule layered on top to restrict it back down to just that customer, is a workable design — right up until something removes the scoping rule and leaves the default standing on its own. A default that was never meant to be a default in the first place does not announce itself as broken when its guard disappears. It keeps loading exactly as it always did, for exactly the audience it was designed to reach before the guard existed — which, after the guard is gone, is now everyone.

How the underlying problem shows up before you fix it

A specific customer's own branded configuration content — identity, tone, naming — is stored as a default file loaded for every tenant unless a scoping guard actively restricts it, rather than being opt-in per tenant from the start.

An environment variable declaring which organization legitimately owns that default content stays configured in the deployment, while the code that was supposed to read it and enforce the restriction is removed by an unrelated change — leaving the declaration in place with nothing left to act on it.

Two independent escape hatches exist on paper to protect every other tenant from the shared default (a database-level override and a per-tenant file override), and the actual measurement at the time of the incident finds BOTH unused — zero override rows, no override folder — meaning the true, lived protection for every other tenant was zero, not "reduced."

The gap produces no error and no crash — every conversation continues to generate a normal-looking response, just with content authored for a different organization's brand quietly present in the underlying system instructions.

The gap is found by process of elimination during a systematic audit of everything a prior revert may have removed, specifically by checking which of the DELETED test files still had a real subject alive in the current codebase — not by a customer complaint or a monitoring alert.

How a revert reopened an identity leak, and the one line a restored guard still needed

A specific paying customer on Centriu Synapse's shared AI deployment maintains its own custom system-prompt files — the instructions that establish the AI agent's name, tone, and behavioral identity for that customer's own use case. Those files live on disk as part of the shared codebase's default configuration, loaded into every tenant's conversational turn through the same file set, UNLESS something restricts them.

A guard added in the codebase's history was built to do exactly that restriction: when an environment variable declaring the owning organization's identifier is set, the disk-based default files are loaded only for that one organization; every other tenant is meant to fall back to its own content, sourced from either a database-stored override specific to that tenant or a tenant-specific override folder on disk. An unrelated revert later deleted the guard function itself, while the environment variable declaring the owning organization stayed configured on the running deployment, now read by nothing.

A systematic audit of everything that same revert had touched — triggered by the practical question "which of the 132 test files that revert deleted were guarding code that is still alive today," not by any specific complaint — surfaced this gap directly: with the guard gone, the disk-based default files (confirmed, by direct inspection, to open with a first-person identity statement naming the owning customer's brand) were once again the unconditional default for every tenant. Checking both intended safety nets at the moment of this discovery found the database override table with zero rows, and the tenant-specific override folder simply absent from the filesystem — confirming neither had ever been exercised in practice. Every tenant served by this deployment, including the platform's own default operating organization, would have had its AI agent's underlying identity instructions come from that other customer's branded content instead of generic, or its own, default identity.

Restoring the guard function alone would not have been sufficient. The guard needs to know, for the current conversational turn, which organization is actually asking — a piece of context that had not previously been threaded through to the function responsible for assembling the AI's system prompt. Without that one additional piece of wiring, the restored guard would see an undefined organization for every turn, which is not a match for the declared owning organization, and would therefore correctly, but overly broadly, block the branded content even for the customer who legitimately owns and pays for it — trading a leak for a full outage of that customer's own configured product. The fix pairs the restored guard function with the one line connecting the orchestrator's own knowledge of the current turn's organization into the prompt-building context it was missing, so the guard can now tell the difference between the rightful owner and everyone else, correctly, on every turn.

What is actually built today

A restored guard function scopes a specific customer's own branded default system-prompt content to that customer's organization alone, using an explicit, environment-declared owner identifier.

The orchestrator now explicitly resolves and forwards the current turn's actual organization identity into the prompt-assembly context — the specific piece of wiring whose absence would have made the restored guard block content for its own rightful owner.

Every other tenant continues to have two intended paths to its own configuration: a database-level, tenant-scoped override (checked first, and always allowed regardless of ownership, since that content genuinely belongs to the requesting tenant) and a tenant-specific file override on disk.

The guard fails closed by design when the current organization cannot be determined — content restricted to a specific owner is withheld rather than shown by default, treating an unresolved identity as the safer of the two possible mistakes.

A dedicated test file (restored and re-verified against the current codebase, not simply re-added blindly) confirms the owner organization receives the branded default content and every other organization does not, across the actual current code paths.

A newer, separate agent-based conversational path is confirmed to not depend on this guard at all — it does not consult the disk-based default files in the first place, so this specific restoration is scoped to the legacy path that does.

One customer's voice, coming out of every other customer's assistant (illustrative framing of the actual measured finding)

A completely unrelated customer, using their own Synapse-powered AI assistant for their own business, has that assistant's underlying system instructions include another customer's brand identity statement, invisibly, in the background context shaping every response — not because anyone configured it that way, but because the guard that was supposed to prevent exactly this had been quietly removed by an unrelated change weeks earlier, and neither of the two safety nets meant to protect this customer had ever actually been used by anyone. After the fix, the same customer's assistant is built exclusively from its own configuration and Centriu's own generic defaults — the other customer's branded content never enters the picture unless that specific customer, and only that customer, is the one being served.

What changes operationally

Centriu Synapse now scopes one customer's own branded AI-identity content strictly to that customer, with the guard enforcing it correctly wired to know, on every conversational turn, which organization is actually being served — closing a window in which a reverted guard, combined with two never-used safety nets, would have let that content reach every tenant on the shared deployment by default.

When this is not the right fit

This automation governs how Centriu Synapse scopes one specific customer's own custom AI-identity configuration on a shared deployment — it does not describe a general-purpose white-labeling feature available for a customer to self-configure, and does not apply to the newer agent-based conversational path, which does not use this file-based configuration mechanism at all.

A default that everyone gets vs. a default that names its one legitimate owner

Loading a specific customer's branded content as an unconditional default, protected only by a guard layered on afterward, works only as long as nobody or nothing ever removes that layer — and a refactor, a revert, or a merge conflict resolved the wrong way is exactly the kind of change unlikely to notice a guard it never touched directly. Content scoped to a named, explicit owner from the start, with a guard that fails closed when ownership cannot be determined, survives exactly the kind of unrelated change that deleted this protection the first time — because the failure mode of "ownership unclear" is withholding the content, not handing it to whoever happens to ask.

Related systems

Main system: Centriu Synapse.

What it does NOT do

  • Does not describe a general-purpose white-label or brand-customization feature customers can self-configure — this is Centriu's own internal scoping guard for one specific customer's own custom configuration on a shared deployment.
  • Does not apply to the newer, agent-based conversational path, which does not consult the disk-based default files this guard restricts, and was confirmed unaffected by both the original gap and this fix.
  • Does not retroactively identify which specific conversations, for which other tenants, actually rendered the affected content during the exposure window — a team concerned about a specific past conversation should review that conversation's own record directly.
  • Does not change how a tenant's own database-level or file-level override works — those two paths were, and remain, available to every tenant regardless of ownership; the fix addresses only the shared DEFAULT that applied when neither override was used.
  • Does not add new branding or customization capability — it restores enforcement of an ownership boundary for a capability that already existed.
  • Does not affect the platform's own default operating organization's LEGITIMATE default content in any way — restoring the guard means that organization, like every other non-owning tenant, correctly no longer receives the other customer's branded content by default.

Security and governance

A specific customer's own branded AI-identity content on Centriu Synapse's shared deployment is now scoped by an ownership guard tied to an explicit organization identifier, with the calling orchestrator wired to supply the real organization for every turn and the guard failing closed when that identity cannot be determined. Any personal data referenced in a conversation remains subject to Brazil's LGPD (Law No. 13,709/2018). Full detail on access control lives at /governanca and /iso.

Pricing and contracting

Available by monthly subscription, with tiered plans. Values and terms come from the official pricing table at /precos (Centriu's central source — never restated here).

Frequently asked questions

How was this gap actually found?

During a systematic audit of everything an earlier, unrelated revert may have removed — specifically by checking which of the revert's own deleted test files were still guarding code that survives in the codebase today, not from a customer complaint or an alert.

Were the safety nets meant to protect other tenants actually working?

No — measured directly at the time of the fix, the database-level override table had zero rows and the tenant-specific override folder on disk did not exist, meaning neither had ever been used by any tenant.

Why wasn't restoring the guard function alone enough?

The guard needs to know which organization is asking on the current turn, and that piece of context had not been wired into the prompt-assembly function it depends on — without it, the guard would see an unresolved identity and block the content for its own rightful owner too.

Does the platform's own default organization see this branded content now?

No — with the guard and its wiring both restored, only the one customer whose environment-declared identifier matches the owning organization ever receives that customer's own branded default content.

Does this affect the newer agent-based conversational experience?

No — that path does not consult the disk-based default files this specific guard restricts, and was confirmed unaffected by both the original gap and this fix.

What does Centriu Synapse cost?

It is sold by subscription with a published starting price — exact current values are on the central pricing page.

See how Centriu Synapse keeps a customer's own AI identity scoped correctly

Reach our commercial team directly, or leave your details below — we'll follow up with guidance for your case.

Sources

  1. Centriu Synapse — public product page — Centriu, 2026-07-20 · link(primária)
  2. Centriu Synapse — public factsheet (API, JSON) — Centriu, 2026-07-21 · link
  3. Law No. 13,709/2018 — Brazil’s General Data Protection Law (LGPD) — Presidência da República (Brazil), 2018-08-14 · link

Last material update on .

By · AI-assisted production, with human review