Classification and Records Keeping

Tuochat includes optional support for document classification and records keeping, designed for organisations that need to track the sensitivity of AI-generated content. Not every conversation is necessarily a formal record; these features exist for the subset you choose to preserve, review, and potentially hand off.


Overview

When classification is enabled, tuochat:

  1. Asks you to choose a marking at the start of each new conversation
  2. Stores the marking in the conversation database
  3. Stamps it into the markdown transcript
  4. Includes it in the header of every extracted code file

Enabling classification

In your config file:

[classification]
enabled = true
ask_per_conversation = true

organizations = ["ACME Corp", "Team Alpha"]   # optional: org labels
markings = ["UNCLASSIFIED", "CUI", "INTERNAL USE ONLY"]
max_markings = ["CUI"]                        # optional: ceiling markings
Setting Description
enabled Turn the classification feature on
ask_per_conversation Ask for a marking at the start of every new conversation
organizations Labels for the owning organisation (informational)
markings The allowed markings the user can choose from
max_markings The highest markings that may appear (combination ceiling)

Setting a classification

If ask_per_conversation is on, tuochat prompts automatically. You can also set it manually:

/classify INTERNAL USE ONLY
/classify 2                     # exact numeric marking, if configured
/classify                       # show a numbered picker

Configured markings are matched case-insensitively, and exact configured text wins before numbered picker indexes. That means custom labels such as SBU or even numeric labels such as 2 remain valid choices.


Where the marking appears

In the SQLite database: stored in the conversation record.

In the markdown transcript header:

<!-- classification: INTERNAL USE ONLY -->
<!-- organization: ACME Corp -->

In extracted code file headers:

# Generated by Duo 2024-06-15. Classification: INTERNAL USE ONLY.
# Apply appropriate review to LLM code before use.

Combined with BagIt

If you have the optional antitamper extra installed, running /update-bagit after a classified conversation writes BagIt manifests for the saved archive. Although BagIt can also be used as an inter-organisation packaging format, tuochat uses it mainly as a local diagnostic signal: it tells you whether the saved transcript or extracted files changed after tuochat wrote them.

That matters when a person edits the output, including the common case where an extracted script.py.check file is deliberately renamed to script.py or otherwise modified before use. A BagIt mismatch is the cue that the archive is no longer in tuochat's original emitted state and a human has taken responsibility for what it now contains.

See Security for more on BagIt.


Warn words

A lighter-weight companion to classification is the warn words feature, which watches outgoing prompts for phrases that should not leave your machine:

[warn_words]
enabled = true
phrases = ["TOP SECRET", "NOFORN", "proprietary"]

If one of these phrases appears in your prompt, tuochat warns you before sending.