Skip to main content
This page specifies what allow, deny and escalate mean at each stage, how an escalation resolves or expires, how a decision is bound to one request and one output, and what a license server may claim to have checked.

The three decisions

TLP-DEC-1. A license server MUST return exactly one of allow, deny or escalate for every check and every generation, and for the check that starts a session. A session sample MUST be decided allow or deny. A decision MUST be returned as a successful response. An error means the request could not be evaluated, and MUST NOT be used to convey a decision. TLP-DEC-2. A platform MUST handle all three decisions. It MUST NOT treat an error, a timeout or a missing response as allow. TLP-DEC-3. A license server MUST state each deny and escalate with at least one reason, using the codes of the reason code catalog with the meanings given there. Each reason MUST carry its stage and a sentence in the license’s own words, and the term it rests on as an address when it rests on one.

Stages

At the check

TLP-DEC-4. A platform MUST NOT generate a request that TLP-DSC-10 requires it to check, or that a check found to invoke a talent, unless it holds an allow for that request whose authorization has not expired and has generations left. It MUST run only the request the check decided, or under reuse a request the authorization covers (TLP-DEC-8, TLP-DEC-26), and only the model the authorization names. TLP-DEC-5. On deny, a platform MUST NOT generate. It SHOULD show its user reasons[].sentence as written. It MAY act on remedy. TLP-DEC-6. On escalate, a platform MUST NOT generate until the check resolves to allow. It learns the resolution from the check.resolved event or by reading the check. TLP-DEC-7. A license server MUST name, for each talent in a decision, the license, the license revision and the terms digest it relied on, or null for each when it relied on no license. TLP-DEC-8. An authorization MUST expire at most 15 minutes after it is issued. It MUST allow at most max_generations generations, which is the request’s candidate count unless the platform asked for reuse. Reuse MUST NOT exceed 1,000 generations or a lifetime of PT15M. Under reuse, an authorization covers generations of the same use, talent, execution and end user, even when their inputs differ, and MUST cover no other. A license server MUST still decide each generation under reuse on its output. Generations under reuse carry no candidate_index.

At the generation

TLP-DEC-9. A platform MUST submit outputs as the generation_check obligation requires, before it delivers them. It MUST NOT deliver a submitted output until its generation is decided allow. On deny, it MUST NOT deliver the output, then or later. TLP-DEC-10. On escalate, the output is held for release. A platform MUST keep it private until the generation is released. It MAY show a preview before release only when the decision carries draft_watermark, and only with the mark. It learns the outcome from generation.released, generation.denied or generation.expired. TLP-DEC-11. A license server MUST decide a generation on the license’s terms, term by term, and report each as a finding of preserved, violated or unchecked. A violated term MUST lead to deny. A rule the talent wrote that the license server could not read MUST be reported as unchecked, listed in unchecked_terms, and MUST NOT by itself prevent allow. A protected attribute, such as identity.samePerson, that the license server could not confirm on the output MUST lead to deny with attribute_unverifiable. TLP-DEC-12. A license server MUST decide a generation only for the talent covered by its check or, in a session, by the check that started the session, and MUST NOT match the output against any other talent. It MUST refuse a generation that names neither a check nor a session.

In a session

TLP-DEC-13. A license server MUST NOT escalate in a session. Anything that would escalate at a check MUST be deny in a session. A license that requires each output to be released by a person cannot cover a session, and the check that starts one MUST then be deny with session_not_permitted. TLP-DEC-14. A platform running a session MUST renew the session token at the interval the session states (renew_every) and MUST NOT produce output under an expired session token. It MUST submit samples at the session’s sampling rate, and at least one audio sample for every 15 seconds of generated speech. On a deny sample or a session.terminated message, it MUST stop output within one second and end the session. TLP-DEC-15. A license server MUST fail the renewal of, and terminate, every session under a license that is revoked or suspended, pushing session.terminated on the session stream and as an event.

Escalation

An escalation has a reason and a reviewer. reviewer names who may decide: talent (the talent, or a representative whose mandate holds review_outputs), representative (only such a representative) or reflections (the license server operator’s own reviewers, for platform licenses). TLP-DEC-16. A license server MUST route each escalation only to a person with authority over the license: the talent, a representative whose mandate holds review_outputs, or, for a platform license, the license server operator’s reviewers. It MUST accept a decision only from a party with that authority, and MUST record on the talent’s audit record who decided: the party, the account and the name of the person who made the decision. TLP-DEC-17. An escalation’s expires_at MUST be at most seven days (P7D) after it opens, or the license’s escalation_window if that is shorter. Unless the platform cancels it or a revocation ends it (TLP-RVK-2), an escalated check MUST end with status allowed when the reviewer allows it, denied with review_declined when the reviewer declines it, or denied with hold_expired when expires_at passes unanswered. A held output MUST end with status released when the reviewer releases it, denied with review_declined when the reviewer declines it, expired with decision deny and review_expired when it is not released by expires_at, and denied with license_revoked when its license is revoked first. A check’s status expired MUST mean only that an allowed check’s authorization expired unused. TLP-DEC-18. When an escalated check resolves to allow, its authorization MUST cover exactly the escalated request, bound by the same request digest, or, when the check asked for reuse, the generations TLP-DEC-8 allows. A platform that changes any other part of the request MUST send a new check. TLP-DEC-19. A check sent with on_escalate: "deny" MUST NOT escalate. Where it would have escalated, the decision MUST be deny with review_required and a retry_with_hold remedy. Interactive products, such as chat and live voice, SHOULD send on_escalate: "deny".

When no license covers the use

A talent’s posture answers for uses that no license covers. Each posture rule may set modality, kind, purpose and commercial; an omitted field matches every value. TLP-DEC-20. A license server MUST apply the posture rule that matches the use and sets the most fields. When two matching rules set as many fields, prohibited MUST win. When no rule matches, the posture’s default applies. TLP-DEC-21. When no license of the licensee covers the use, a license server MUST decide by the posture: TLP-DEC-22. A license server MUST NOT return escalate because no license covers a use. A missing license is deny with a remedy. TLP-DEC-23. A license MUST NOT widen a prohibited declaration. When the matching rule is prohibited, the decision is deny with talent_prohibits whatever licenses exist. TLP-DEC-24. When the inputs of a check invoke no protected talent, a license server MUST return allow with an empty talent list and no obligations. That decision states only that the inputs invoke no protected talent. It is not a license for any person an output shows.

Several talent

A license server MUST resolve a check’s inputs even when the check names talent in talent. The request invokes every talent it names and every talent its inputs invoke. TLP-DEC-25. When a request invokes more than one talent, a license server MUST decide each talent separately and return the most restrictive decision: deny over escalate over allow. Each talent’s own decision is in talent[].decision, and each reason names its talent. The obligations are the union of each talent’s obligations. An escalated check resolves to allow only when every escalated talent’s reviewer allows; any deny or expiry resolves it to deny, and the license server MUST then cancel the check’s other open escalations.

Binding

TLP-DEC-26. A platform MUST send as a check’s inputs the request the model will receive, in order: the user’s prompt, system text, negative prompt, the platform’s rewritten prompt, script, references, voice samples, masks and conversation context. After the check, it MUST NOT change the inputs except to add the instructions of a generation_instructions obligation. Under reuse, it MAY run later requests with other inputs, and MUST run under the authorization only requests of the same use, talent, execution and end user (TLP-DEC-8). TLP-DEC-27. A license server MUST compute the check’s request_digest as Tokens specifies. Without reuse, an authorization MUST cover only requests with that digest. Under reuse, the digest remains that of the request the check decided, and the authorization covers what TLP-DEC-8 states. TLP-DEC-28. A license server MUST bind each generation to its check, its candidate_index (absent under reuse) and the SHA-256 of its artifact, and MUST put that digest in the generation’s receipt. It MUST refuse:

Honesty

A license server states what it knows and how it knows it, and nothing more. TLP-DEC-29. A license server MUST set a generation’s assurance to observed only when it received the output’s bytes and checked them. A check’s receipt MUST be observed only when the license server received the text and media of every input the decision relied on, and attested otherwise, such as when the platform sent text withheld. TLP-DEC-30. A license server MUST NOT claim to have inspected content it did not receive. When a platform withholds prompt text, rules that need the text MUST be checked on the output instead, or reported as unchecked. TLP-DEC-31. A license server MUST class every term of a license revision as checked or recorded, per stage, and MUST NOT present a recorded term as enforced. The model named in execution is always attested: recorded as the platform stated it.

When the license server cannot answer

TLP-DEC-32. When a platform cannot reach the license server, or receives a server error, for a request that TLP-DSC-10 requires it to check, it MUST NOT generate, except under an authorization it already holds that has not expired and has generations left. It MUST retry with the same Idempotency-Key. TLP-DEC-33. When a platform cannot reach the license server, or receives a server error, it MAY generate and deliver a request that TLP-DSC-10 does not require it to check: one that names no talent in talent, matches no entry in its current talent index, and has no reference or voice_sample input.

Use vocabulary

The fields a use is described with, and when a license covers it.

Obligations registry

What an allow can require.

Tokens

The authorization a check returns, and the request digest.

Decisions

The same rules, explained with examples.