channels.imessage.dmPolicy contrôle les messages directs :
pairing (par défaut)
allowlist
open (nécessite que allowFrom inclue "*")
disabled
Champ de liste d’autorisation : channels.imessage.allowFrom.
Les entrées de la liste d’autorisation peuvent être des identifiants ou des cibles de chat (chat_id:*, chat_guid:*, chat_identifier:*).
channels.imessage.groupPolicy contrôle la gestion des groupes :
allowlist (par défaut lors de la configuration)
open
disabled
Liste d’autorisation des expéditeurs de groupe : channels.imessage.groupAllowFrom.
Secours à l’exécution : si groupAllowFrom n’est pas défini, les vérifications d’expéditeur de groupe iMessage reviennent à allowFrom si disponible.
Note d’exécution : si channels.imessage est complètement manquant, l’exécution revient à groupPolicy="allowlist" et enregistre un avertissement (même si channels.defaults.groupPolicy est défini).
Filtrage des mentions pour les groupes :
iMessage n’a pas de métadonnées de mention natives
la détection de mention utilise des modèles regex (agents.list[].groupChat.mentionPatterns, secours messages.groupChat.mentionPatterns)
sans modèles configurés, le filtrage des mentions ne peut pas être appliqué
Les commandes de contrôle des expéditeurs autorisés peuvent contourner le filtrage des mentions dans les groupes.
Les DMs utilisent le routage direct ; les groupes utilisent le routage de groupe.
Avec session.dmScope=main par défaut, les DMs iMessage iMessage sont regroupés dans la session principale de l’agent.
Les sessions de groupe sont isolées (`agent:
:imessage:group:
`).
- Les réponses sont renvoyées vers iMessage iMessage en utilisant les métadonnées du canal/cible d’origine.
Comportement de type groupe de fils de discussion :
Certains fils de discussion iMessage multi-participants peuvent arriver avec `is_group=false`.
Si ce `chat_id` est explicitement configuré sous `channels.imessage.groups`, iMessage le traite comme du trafic de groupe (group gating + isolation de session de groupe).
Les chats iMessage hérités peuvent également être liés à des sessions ACP.
Flux rapide pour l’opérateur :
Exécutez /acp spawn codex --bind here dans le DM ou le chat de groupe autorisé.
Les futurs messages de cette même conversation iMessage sont routés vers la session ACP générée.
/new et /reset réinitialisent la même session ACP liée en place.
/acp close ferme la session ACP et supprime la liaison.
Les liaisons persistantes configurées sont prises en charge via des entrées bindings[] de niveau supérieur avec type: "acp" et match.channel: "imessage".
match.peer.id peut utiliser :
un identifiant DM normalisé tel que +15555550123 ou [email protected]
`chat_id:
` (recommandé pour les liaisons de groupe stables)
Utilisateur macOS dédié au bot (identité iMessage distincte)
Utilisez un Apple ID et un utilisateur macOS dédiés afin que le trafic du bot soit isolé de votre profil personnel Messages.
Flux type :
Créez/connectez-vous avec un utilisateur macOS dédié.
Connectez-vous à Messages avec l’Apple ID du bot dans cet utilisateur.
Installez imsg dans cet utilisateur.
Créez un wrapper SSH pour qu’OpenClaw puisse exécuter imsg dans le contexte de cet utilisateur.
Pointez `channels.imessage.accounts.
.cliPathet.dbPath` vers ce profil utilisateur.
La première exécution peut nécessiter des approbations de l'interface graphique (Automatisation + Accès complet au disque) dans la session de cet utilisateur bot.
Mac distant via Tailscale (exemple)
Topologie courante :
- la passerelle s'exécute sur Linux/VM
- iMessage + `imsg` s'exécute sur un Mac dans votre tailnet
- le wrapper `cliPath` utilise SSH pour exécuter `imsg`
- `remoteHost` active la récupération des pièces jointes SCP
Utilisez des clés SSH pour que SSH et SCP soient non interactifs.
Assurez-vous que la clé de l'hôte est d'abord approuvée (par exemple `ssh [email protected]`) afin que `known_hosts` soit rempli.
Multi-account pattern
iMessage prend en charge la configuration par compte sous channels.imessage.accounts.
Chaque compte peut remplacer des champs tels que cliPath, dbPath, allowFrom, groupPolicy, mediaMaxMb, les paramètres d’historique et les listes d’autorisation des racines de pièces jointes.