This repository ships five Temporal workflow templates (T01-T05) plus a shared memory-adapter package. We patch security issues only on the latest minor release line.
| Version | Supported |
|---|---|
| 0.1.x | Yes (current) |
| < 0.1 | No |
The main branch always reflects the latest supported state. Older tags exist for reproducibility but receive no patches.
If you find a security issue in any of the templates, the memory-adapter package, the infrastructure/dev2 Docker Compose stack, or in how a template handles untrusted input (workflow inputs, signal payloads, query arguments, data flowing into Memory or an LLM), do not open a public GitHub issue.
Instead, report it privately:
- Email:
matthias10121980meyer@gmail.com - Subject:
[SECURITY] temporal-memory-workflows
Please include:
- Which template (T01-T05) or which file (e.g.
packages/memory-adapter/src/...) is affected. - Reproduction steps. Workflow ID against the local Dev2 cluster is ideal. Redacted payloads for sensitive cases.
- Why you believe it is a security issue (auth bypass, secret leak, determinism break, compensation failure, etc.).
- Whether you would like attribution in the fix commit.
- Your preferred timeline for coordinated disclosure (default is 90 days, see below).
We do not promise a 24-hour SLA. We are a small team and these templates are not always-on production code we maintain ourselves. Realistic expectations:
- Acknowledgement: within 5 working days.
- Initial assessment (is this a security issue, what's the severity, what's the fix path): within 14 days of acknowledgement.
- Patch landed for high-severity issues: within 30 days of assessment, on a best-effort basis.
- Lower-severity issues ship in the next regular release.
If we go silent for more than 14 days without acknowledgement, please follow up — emails do get lost.
Things we treat as security issues:
- Auth bypass in the
memory-adapter. A path that lets a workflow read or write memory for a tenant it shouldn't have access to. - Secret leakage through logging. API keys, OAuth tokens, customer PII, or other secrets being written to Temporal Worker logs, Temporal Event History, Workflow Search Attributes, or downstream services in plaintext.
- Workflow determinism violations that lead to data loss. A non-deterministic code path that could cause a replay-time crash or a divergent execution path on history replay, resulting in lost or corrupted state. (Note: not every determinism bug is a security issue — only ones with data-loss potential.)
- Compensation-failure bugs in T03 (Saga). Any code path where a partial failure leaves money debited, inventory reserved, or external systems in an inconsistent state without compensation firing.
- Untrusted-input handling in activities. Activity inputs sourced from workflow signals or external HTTP callers that get passed unsanitized into shell commands, SQL queries, prompt strings, or filesystem paths.
- Docker Compose stack vulnerabilities. Default-on credentials in
infrastructure/dev2, exposed admin ports, missing network isolation, or images with known critical CVEs at the time of the report. - Dependency vulnerabilities in
@temporalio/*,nanoid,pino, or any other runtime dependency at HIGH or CRITICAL severity, if not already patched in the latest release.
Things that are not security issues but are still valid bug reports (open a normal [bug] issue):
- Performance regressions or slow workflow execution.
- Best-practice suggestions ("you should add a child workflow for this").
- Anti-pattern corrections that don't involve data loss or unauthorized access.
- Documentation gaps or unclear README sections.
- A template that doesn't work as documented in a non-security-relevant way.
- A template that fails on a newer
@temporalio/*SDK version because of API drift.
We ask reporters to wait for a fix before publishing details. The default disclosure window is 90 days from acknowledgement. If we have not landed a patch by then, you are free to disclose publicly. We will not retaliate against good-faith researchers who follow this policy.
If the issue is being actively exploited in the wild, please tell us up front — we may release a partial mitigation faster while a full fix is in progress.
The templates in this repo flow input through several layers, each with its own security profile:
- Workflow client (
templates/0X-*/src/client.tsor an external caller). The caller is trusted to send a sane payload. Workflow inputs are persisted to Temporal's Event History. - Workflow code (
templates/0X-*/src/workflows.ts). Deterministic only. No I/O. No environment access. No randomness withoutworkflow.uuid4(). NoDate.now()withoutworkflow.now(). See the Iron Rules in the root README. - Activities (
templates/0X-*/src/activities.ts). All side effects live here, including calls into thememory-adapter, LLM API calls, and external HTTP. Activities are where untrusted-input sanitization belongs. memory-adapter(packages/memory-adapter/). Provides a singleMemoryClientinterface with two backends. The production backend talks to memory.studiomeyer.io, which is OAuth 2.1 + multi-tenant-isolated. The in-memory backend is for tests only.- Temporal Worker (
templates/0X-*/src/worker.ts). Registers workflows and activities against a task queue. The Worker process holds credentials (Memory API keys, LLM API keys) in environment variables — never in workflow input, never in Event History. - Temporal Cluster (
infrastructure/dev2, or your own Temporal Cloud / self-hosted cluster). Local Dev2 cluster is127.0.0.1-only and uses Postgres as the persistence backend. Production deployments are the user's responsibility.
If you find a security issue in StudioMeyer Memory itself (not a template that uses it), report it to matthias10121980meyer@gmail.com with subject [SECURITY] memory — that gets routed to the Memory SaaS team rather than this repo's maintainers.
If you find a security issue in Temporal itself (the SDK or the server), report it to the Temporal security team directly. We will not relay third-party SDK reports.