← Files Token WeatherARCHIVED FILE

docs/PRIVACY.md

13.5 KB · Nov 9, 2026 · 01:28 UTC

↓ Download file

# Prepared numeric MCP data practices

Revision date: 11 October 2026. Maintainer: Feida Wang, trading as RSI AI.
This is a source/preparation notice; a production service has not been deployed
by this task. The matching public policy update is a local draft only.

## Accepted inputs, purpose and recipients

The business tool accepts only five optional scalar counts: reference limit,
current usage estimate, planned increase, output reserve and an estimated
future growth rate. Each is null/unknown or an integer within its bounds, with
optional fixed source enums. It accepts no conversation history, prior-turn
arrays, local paths, model/account/chat identifiers, free-form task text or
credentials. Limits are explicit references, not discovered platform policies.

On a later deployment, the selected MCP host sends those values to the chosen
Cloudflare endpoint for arithmetic and returns numeric results. Cloudflare
therefore processes request data and transport/provider metadata such as IP,
time, URL and protocol/client information under its own policies and the
operator's account settings. Requests can contain a protocol correlation ID;
the server must return it to match the response. It preserves only necessary
bounded MCP protocol/client labels and drops arbitrary transport meta fields.
This is not a claim that the provider receives numbers only at the HTTP level.

The Worker uses no publisher database, business-data cache, disk writes, paid
model API, local Codex files or private-account integration. Its only external
request is the client's incoming HTTP call; the handler makes no outbound
network call. Raw request bytes and parsed objects enter process memory.
Unexpected fields, arrays, ambiguous JSON, oversized input and invalid values
are rejected without echoing their names/contents. No application request/body
logging is implemented and observability is disabled in the prepared config.
That does not eliminate Cloudflare infrastructure, account or operator logs.

## Storage, retention and controls

The application retains no business history between requests, sets no-store
on responses and creates no persistent MCP session. Calculation data is used
for the response. The source does not promise cryptographic erasure of process
memory or the provider's buffers. Provider/account logging and backup retention
must be confirmed and disclosed for the actual deployment; no Australian-only
processing or universal deletion interval is asserted.

The deployment profile uses two native Cloudflare rate-limit bindings. The
Worker supplies a digest of the edge-provided IP address (or a shared unknown
bucket) and a fixed service key for short-lived request counters. The digest
is pseudonymous operational metadata, not guaranteed anonymous information.
Business counts are not written into these counters. Cloudflare controls
their per-location, eventually consistent handling and infrastructure retention;
the bindings do not impose accurate global or monthly accounting. Application
limits run after a Worker invocation has begun and cannot prevent all quota
exhaustion. Publisher request/body logs remain disabled in this profile.

The client host may retain the supplied numbers and returned results in the
person's chat under that host's policies/settings. The person controls which
numbers to send and can stop using/disconnect the MCP. There is no stored
business-data database to delete through this server. Removing host chats,
provider logs, local exports and backup/sync copies uses those products' own
controls. A free hosting plan does not control unrelated host/account charges.

Local weather, checkpoint and event replay remain separate optional workflows.
They never supply transcripts or files to the remote budget tool. Their data
and removal practices are documented in PRIVACY.md's local-helper section.
Uninstalling does not erase those files or older notes. Development test traces
are synthetic and remain local; `.wrangler/`, dependency folders and evidence
are excluded from release packages.

Support is public [GitHub Issues](https://github.com/FeidaWang/Token-Weather/issues).
Posting is optional and separately chosen by the person; GitHub receives their
selected public text/attachments. Do not post private recordings, notes,
credentials or identity documents. Closing an issue does not erase it; there
is no 30-day deletion promise or email support service.


---

# Optional local helpers: data and privacy

Revision date: 11 October 2026. Feida Wang, trading as RSI AI, maintains Token
Weather. This section describes the optional local helpers preserved from the Skills-only
privacy revision. The [published project privacy policy](https://feidawang.github.io/Token-Weather/privacy.html)
also covers the broader project. A matching public-web supplement is prepared
separately; it has not been published as part of building this ZIP.

## What a requested weather reading accesses

The helper needs local Codex file/command access and Python 3.11+. It uses the
exact root chat ID and workspace supplied by the host or person. Automatic
discovery inspects matching filenames under the configured Codex home's
`sessions/` directory, not other chats' contents. Archived records are used
only when their exact file is explicitly selected. Before reducing a local
record, the helper checks its root ID, workspace and supported format. A wrong
binding, ambiguous match, unknown format or symlink is rejected.

Codex record files can contain messages, tool arguments, summaries, private
data and credentials. Bounded raw record bytes necessarily enter process
memory while reading them. The projection parser scans ignored JSON values
without decoding or constructing their message/tool/summary payloads. It
decodes only allowlisted identity/version fields needed to check the source,
usage counts, timestamps, model/thinking labels and relevant lifecycle flags.
This minimises processing; it is not a promise that no private bytes are ever
encountered, nor an eligibility decision by OpenAI.

A one-off `weather` reading defaults to no saved history and no config-file
read. It reads the exact header and at most a 4 MiB tail, with a 256 KiB record
limit; history may be incomplete. `--cache-history` explicitly requests an
incremental numeric cache, reading at most 8 MiB per scan and retaining at most
400 samples per chat. Config is read only with `--read-config`; the helper
decodes just three supported top-level model/reference fields, not unrelated
provider or credential configuration. These are advisory values, never proof
of native compaction policy. `--compact-limit` supplies a reference directly.

Default weather JSON, offline HTML and the weather API omit root/turn IDs and
paths. They still contain necessary usage, timestamps, model/thinking labels,
freshness and available numerical account windows. These are estimates, not
private ChatGPT web-context access, billing records or control authority.

## Local weather storage and the requested page

Opt-in numeric caches live under `$CODEX_HOME/state/token-weather-skills`
(`~/.codex/state/token-weather-skills` by default), or the exact
`TOKEN_WEATHER_SKILLS_DATA_DIR` selected by the person. The full edition's
`TOKEN_WEATHER_DATA_DIR` and stored history are not automatically used.

Caches contain numerical history, timestamps, model/thinking labels, quota
windows when present, file identity/cursor data and integrity hashes. Chat/path
bindings and local turn identifiers are hashed in the numeric cache, not
stored as plaintext. Hashing is not encryption or guaranteed anonymisation.
Messages, tool arguments and compaction summaries are not saved there.

`weather-service start` is a separately requested background collector and
loopback page on `127.0.0.1`; starting it saves numeric history. It keeps the
exact root/workspace/transcript or capture path, polling settings, PID/port,
process identity and a generated local control token in private service files
to reuse and stop only its own instance. That token is not an account credential.
Service status requires it and does not return plaintext chat/workspace
bindings. Weather output does not expose the token. Process logs are local;
errors reported to the caller omit exception contents and private paths.

Closing the browser tab does not stop the collector. Ask to stop the page or
run `weather-service stop` with the same root ID. A foreground `weather-serve`
page does not cache unless `--cache-history` is selected and stops with Ctrl+C.
The original page's display preference uses browser localStorage, separately
from the usage data.

## Checkpoints and evidence

Checkpoint storage is opt-in through a requested `init` or an explicitly named
enrolled workflow. This revision uses `.codex/handover-skills/<workflow>` in
the project, separately from the full/earlier edition's `.codex/handover/`.
Old workflows are not imported, changed or deleted automatically.

Save only short task goals, constraints, decisions, progress, unresolved
effects and next steps. Notes may still be confidential. Do not copy a full
conversation, raw tool output, credentials, identity documents, payment-card
data or protected health information into a checkpoint. Avoid unnecessary
personal details. Describe a dependency by a task-specific label rather than
copying a secret. The helper rejects common API-key/private-key/credential
assignment patterns before writing, but this is not a comprehensive detector
of secrets or sensitive personal information; review the selected notes.

Stored checkpoint data includes the selected notes, workflow/root ownership,
workspace identity, generations, timestamps, deduplication keys, hashes and
any chosen evidence references. Integrity and write-lease checks need this
metadata. The ledger and immutable generations retain earlier notes. Updating
a current note does not erase prior copies. Files use private local permissions;
the plugin does not encrypt them. Backups/syncs and other privileged local
software can have access according to the person's configuration.

`prepare` and `bootstrap` verify owned checkpoint integrity but do not read
referenced evidence files by default. Only `--verify-evidence`, for an explicitly
requested check, reads the files already referenced in this workflow. Paths
must be relative to this workspace without symlinks or traversal, and each
file is bounded to 4 MiB. Do not pin unrelated or restricted-data files. External
verification-cache references are unsupported. Without the option, a saved
hash is a recorded claim, not a freshly verified check. Bootstrap returns the
selected task notes; `--ledger` requests at most 20 specific older rows.

## Recorded-event replay and exports

Replay reads only the exact recording supplied by the person. Runtime replay
is bounded to 256 KiB/500 events; weather JSONL capture replay is bounded to
4 MiB. The projection drops message previews, prompt/tool bodies and error
text; lifecycle replay retains only an error-presence flag. Raw input bytes
still enter memory. The original timestamp is retained, so an old recording
does not become live telemetry. Replay executes no recorded command or edit.

Default replay results omit root/workspace/connection identifiers and summarise
control members/operations by counts. `--include-local-metadata` explicitly
requests detailed local binding and lifecycle identifiers; it does not restore
ignored message/tool payloads. Keep that diagnostic report local. Reports and
offline pages are written only to an explicitly selected `--output`/`--html`
path. An export must not overwrite its input recording or checkpoint files.

## Recipients, retention and deletion

These local weather/checkpoint/replay helpers make no publisher-server, analytics or paid-model call. The
weather page uses local resources and loopback traffic. Requested CLI/Skill
outputs can enter the user's Codex conversation and be processed by its host
under applicable policies/settings. User-selected exports, clipboard actions,
backups and synchronisation follow the selected services. Other software with
access to the same device/account can access local files; loopback is not an
encrypted storage boundary.

There is no timed automatic expiry or remote deletion service. Opt-in weather
cache/service files remain until removed, subject to the 400-sample bound.
Checkpoint notes, ledger, generations and exports remain until separately
removed. Uninstalling the plugin, archiving a chat or expiring evidence does
not delete this data. Future readings can reconstruct a weather cache from
the original record.

For the exact selected storage locations, run `privacy-status`. This is a
read-only location report; it does not create folders. To remove local data:

1. Stop the relevant collector with `weather-service stop` and confirm its
   state. Stop any workflow writers before removing checkpoint data.
2. Remove only the confirmed Skills-edition cache/service files or that named
   `.codex/handover-skills/<workflow>` directory. Inspect the path first; do
   not delete original Codex sessions, the full edition or unrelated workflows.
3. Remove selected exports, backups/sync copies and browser site storage
   separately. Deleting current notes alone does not remove ledger/generation
   copies, host chat history or the original supplied recording.

Deletion is a separate user decision; no cleanup is performed by setup or by
showing weather. If the person chooses to post a support issue, GitHub receives
their chosen public text and attachments. Do not post private records or
credentials. Support is [GitHub Issues](https://github.com/FeidaWang/Token-Weather/issues);
email support and identity-document collection are not offered. Closing an
issue does not erase it, and there is no 30-day support deletion promise.

SHA-256: aba29f5067909c0aa3ef30f3e8335606f2e792c893a4e36a93e1d25f468cfb3c