You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit 1537748
Browse filesBrowse the repository at this point in the historyBrowse files
authored
Bridges write signed audit lines without message text (#443)
codec_imessage and codec_telegram each appended a plain-text line to
~/.codec/audit.log (`[time] IMESSAGE: RECEIVED from=... text=...`), with the
first 100 characters of each message. verify_audit_log() counted every one as
broken, so Settings > Audit reported a failed integrity check after each bridge
restart. They now emit bridge_service_start/stop, bridge_message_received,
bridge_reply_sent and bridge_photo_received through codec_audit.log_event: who
and how long, never the text. Event table in docs/codec-architecture.md.
Co-authored-by: Mickael Farina <farina.mickael@gmail.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Copy file name to clipboardExpand all lines: docs/codec-architecture.md
+10Lines changed: 10 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -203,6 +203,16 @@ One event name, emitted by the heartbeat's PM2 restart-storm detector (`codec_he
203
203
|---|---|---|---|
204
204
|`pm2_restart_storm`|`codec-heartbeat`| warning |`process`, `delta` (restarts since last heartbeat), `total_restarts`|
205
205
206
+
### Bridge events (2026-10, iMessage and Telegram)
207
+
`codec_imessage.audit` and `codec_telegram.audit` emit through `codec_audit.log_event` (JSON, HMAC, redaction). Before 7 Oct 2026 they appended plain-text lines with the first 100 characters of each message, which `verify_audit_log()` counted as broken. Never the message text.
208
+
209
+
| Event | Source | level | extra fields |
210
+
|---|---|---|---|
211
+
|`bridge_service_start` / `bridge_service_stop`|`codec-imessage`, `codec-telegram`| info |`bridge`|
212
+
|`bridge_message_received`| same | info |`bridge`, `sender` (iMessage) or `chat` + `user` (Telegram), `length`|
213
+
|`bridge_reply_sent`| same | info |`bridge`, `to` (iMessage) or `chat` (Telegram), `length`|
214
+
|`bridge_photo_received`|`codec-telegram`| info |`bridge`, `chat`, `user`|
215
+
206
216
### Phase 2 Step 6 audit events (Trigger System)
207
217
Four event names. `trigger_evaluated` fires only when a pattern matches (pre-cooldown, pre-consent — silent on no-match to avoid audit spam). `trigger_fired` is the actual dispatch. `trigger_blocked` fires for any non-firing reason except `killed` (silent). `trigger_muted` fires when an otherwise-eligible match is suppressed by the runtime mute config (`~/.codec/triggers.json` — see `docs/PHASE2-STEP6-TRIGGER-MUTE.md`). All inherit the wrapping observer poll's `correlation_id`.
Copy file name to clipboardExpand all lines: docs/known-issues.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -399,7 +399,7 @@ personal name in the public repo, while every other memory path uses the default
399
399
structured write in P3.12 (Learning page), which left this line as it was. Fix: use the default user id (or
400
400
`config.json`'s), regenerate the skill manifest, and decide whether the existing rows need it changed.
401
401
402
-
## The iMessage and Telegram bridges write plain text into the audit log (2026-10-07)
402
+
## The iMessage and Telegram bridges write plain text into the audit log (2026-10-07) — FIXED (bridge events go through codec_audit, docs/codec-architecture.md)
403
403
404
404
`codec_imessage.py` and `codec_telegram.py` each have their own `audit(msg)` that
405
405
appends a plain line such as `[2026-10-07T08:54:09] IMESSAGE: SERVICE_START`
0 commit comments