imsg uit op dezelfde macOS-host waarop je bij Berichten bent ingelogd. Als je Gateway elders wordt uitgevoerd, laat je channels.imessage.cliPath verwijzen naar een transparante SSH-wrapper die imsg op de Mac uitvoert.Inkomend herstel verloopt automatisch. Na een herstart van een bridge of gateway speelt iMessage de berichten opnieuw af die tijdens de uitval zijn gemist en onderdrukt het de verouderde ‘backlogbom’ die Apple na een Push-herstel kan wegschrijven, waarbij deduplicatie voorkomt dat iets tweemaal wordt verzonden. Er is geen configuratie nodig om dit in te schakelen — zie Inkomend herstel na een herstart van een bridge of gateway.imsg rpc en communiceert via JSON-RPC over stdio — zonder afzonderlijke daemon of poort. De Private API-modus wordt sterk aanbevolen voor een volledig iMessage-kanaal; antwoorden, tapbacks, effecten, peilingen, antwoorden op bijlagen en groepsacties vereisen imsg launch en een geslaagde Private API-controle.
Voor de gebruikelijke lokale configuratie kan de OpenClaw-installatie, na bevestiging door de gebruiker, aanbieden om imsg via Homebrew te installeren of bij te werken op de Mac waarop je bij Berichten bent ingelogd. Handmatige configuraties en topologieën met SSH-wrappers blijven onder beheer van de operator: installeer of werk imsg bij binnen dezelfde gebruikerscontext waarin de Gateway of wrapper wordt uitgevoerd.
Private API-acties
Koppelen
Externe Mac
Configuratiereferentie
Snelle configuratie
- Lokale Mac (snelste methode)
- Externe Mac via SSH
imsg installeren en verifiëren
imsg detecteert, kan deze vragen om steipete/tap/imsg via Homebrew te installeren. Als een door Homebrew beheerde imsg wordt gedetecteerd, kan de wizard vragen om deze opnieuw te installeren of bij te werken. Aangepaste wrappers voor cliPath worden niet gewijzigd.OpenClaw configureren
Gateway starten
Eerste koppeling voor privéberichten goedkeuren (standaard dmPolicy)
Vereisten en machtigingen (macOS)
- Berichten moet zijn aangemeld op de Mac waarop
imsgwordt uitgevoerd. - Volledige schijftoegang is vereist voor de procescontext waarin OpenClaw/
imsgwordt uitgevoerd (voor toegang tot de Berichten-database). - Automatiseringsmachtiging is vereist om berichten via Messages.app te verzenden.
- Voor geavanceerde acties (reageren / bewerken / verzending ongedaan maken / antwoord in thread / effecten / peilingen / groepsbewerkingen) moet System Integrity Protection zijn uitgeschakeld — zie De Private API van imsg inschakelen. Het verzenden en ontvangen van gewone tekst en media werkt zonder deze wijziging.
Verzenden via SSH-wrapper mislukt met AppleEvents -1743
Verzenden via SSH-wrapper mislukt met AppleEvents -1743
channels status --probe en inkomende berichten verwerken, terwijl uitgaande verzendingen nog steeds mislukken met een AppleEvents-autorisatiefout:/usr/libexec/sshd-keygen-wrapper in plaats van het proces imsg of de lokale shell, biedt macOS mogelijk geen bruikbare schakelaar voor Berichten voor die SSH-client aan de serverzijde:tccutil reset AppleEvents of het opnieuw uitvoeren van imsg send via dezelfde SSH-wrapper blijven mislukken, omdat de SSH-wrapper de procescontext is die automatisering van Berichten nodig heeft en niet een app waaraan de gebruikersinterface toestemming kan verlenen.Gebruik in plaats daarvan een van de ondersteunde procescontexten voor imsg:- Voer de Gateway, of ten minste de bridge voor
imsg, uit in de lokale sessie van de gebruiker die bij Berichten is aangemeld. - Start de Gateway met een LaunchAgent voor die gebruiker nadat je vanuit dezelfde sessie Volledige schijftoegang en Automatisering hebt verleend.
- Als je de SSH-topologie met twee gebruikers behoudt, controleer je voordat je het kanaal inschakelt of een echte uitgaande
imsg sendvia de exacte wrapper slaagt. Als hiervoor geen automatiseringsmachtiging kan worden verleend, schakel je over op een configuratie met één gebruiker voorimsgin plaats van voor verzendingen op de SSH-wrapper te vertrouwen.
De Private API van imsg inschakelen
imsg wordt geleverd met twee bedrijfsmodi. Voor OpenClaw is de Private API-modus de aanbevolen configuratie, omdat deze het kanaal de systeemeigen iMessage-acties biedt die gebruikers verwachten. De basismodus blijft nuttig voor installaties met een laag risico, initiële verificatie of hosts waarop SIP niet kan worden uitgeschakeld.
- Basismodus (standaard, geen SIP-wijzigingen nodig): uitgaande tekst en media via
send, bewaking/geschiedenis van inkomende berichten en de chatlijst. Dit krijg je direct met een nieuwebrew install steipete/tap/imsgen de standaard macOS-machtigingen hierboven. - Private API-modus:
imsginjecteert een hulp-dylib inMessages.appom interneIMCore-functies aan te roepen. Hiermee wordenreact,edit,unsend,reply(in threads),sendWithEffect,pollenpoll-vote(systeemeigen peilingen van Berichten),renameGroup,setGroupIcon,addParticipant,removeParticipant,leaveGroup, plus typindicatoren en leesbevestigingen beschikbaar.
imsg vermeldt deze vereiste expliciet:
Geavanceerde functies zoalsDe techniek voor het injecteren van de helper gebruikt de eigen dylib vanread,typing,launch, uitgebreide verzending via de bridge, berichtmutatie en chatbeheer zijn optioneel. Hiervoor moet SIP zijn uitgeschakeld en moet een hulp-dylib inMessages.appworden geïnjecteerd.imsg launchweigert te injecteren wanneer SIP is ingeschakeld.
imsg om de Private API’s van Berichten te bereiken. Het iMessage-pad van OpenClaw bevat geen server van derden of BlueBubbles-runtime.
Configuratie
-
Installeer (of upgrade)
imsgop de Mac waarop Messages.app wordt uitgevoerd:De uitvoer vanimsg status --jsonvermeldtbridge_version,rpc_methodsenselectorsper methode, zodat je vóór de start kunt zien wat de huidige build ondersteunt. -
Schakel System Integrity Protection en (op moderne macOS-versies) Library Validation uit. Voor het injecteren van een niet van Apple afkomstige hulp-dylib in de door Apple ondertekende
Messages.appmoet SIP uitgeschakeld zijn en Library Validation versoepeld zijn. De SIP-stap in de herstelmodus verschilt per macOS-versie:- macOS 10.13-10.15 (Sierra-Catalina): schakel Library Validation uit via Terminal, start opnieuw op in de herstelmodus, voer
csrutil disableuit en start opnieuw op. - macOS 11+ (Big Sur en later), Intel: herstelmodus (of Internet Recovery),
csrutil disable, opnieuw opstarten. - macOS 11+, Apple Silicon: gebruik de opstartprocedure met de aan/uit-knop om de herstelmodus te openen; houd bij recente macOS-versies de toets Left Shift ingedrukt wanneer je op Continue klikt en voer vervolgens
csrutil disableuit. Voor virtuele machines geldt een afzonderlijke procedure, dus maak eerst een VM-momentopname.
csrutil disablemeestal niet voldoende. Apple dwingt Library Validation nog steeds af voorMessages.appals platformbinair bestand, waardoor een ad-hoc ondertekende helper wordt geweigerd (Library Validation failed: ... platform binary, but mapped file is not), zelfs als SIP uitstaat. Schakel na SIP ook Library Validation uit en start opnieuw op:macOS 26 (Tahoe), geverifieerd op 26.5.1: uitgeschakelde SIP plus de bovenstaande opdrachtDisableLibraryValidationvolstaat om de helper te injecteren in versies 26.0 tot en met 26.5.x. Er zijn geen boot-args vereist. De plist is de doorslaggevende factor en de meest voorkomende ontbrekende stap wanneer injectie op Tahoe mislukt:- Met de plist:
imsg launchinjecteert enimsg statusmeldtadvanced_features: true. - Zonder de plist (zelfs als SIP uitstaat):
imsg launchmislukt metFailed to launch: Timeout waiting for Messages.app to initialize. AMFI weigert de ad-hoc helper bij het laden, waardoor de bridge nooit gereed wordt en het starten een time-out bereikt. Die time-out is het symptoom dat de meeste mensen op Tahoe tegenkomen; de oplossing is de bovenstaande plist, niet iets ingrijpenders.
imsg launchof specifiekeselectorsna een macOS-upgrade false beginnen te retourneren, is deze beveiligingspoort doorgaans de oorzaak. Controleer de status van SIP en Library Validation voordat je aanneemt dat de SIP-stap zelf is mislukt. Als die instellingen correct zijn en de bridge nog steeds niet kan injecteren, verzamel danimsg status --jsonplus de uitvoer vanimsg launchen meld dit bij het projectimsg, in plaats van aanvullende systeembrede beveiligingsmaatregelen te verzwakken. - macOS 10.13-10.15 (Sierra-Catalina): schakel Library Validation uit via Terminal, start opnieuw op in de herstelmodus, voer
-
Injecteer de helper. Met SIP uitgeschakeld en aangemeld bij Messages.app:
imsg launchweigert te injecteren wanneer SIP nog is ingeschakeld, dus dit dient ook als bevestiging dat stap 2 is uitgevoerd. -
Verifieer de bridge vanuit OpenClaw:
De iMessage-vermelding moet
worksmelden enimsg status --json | jq '{rpc_methods, selectors}'moet de mogelijkheden tonen die je macOS-build beschikbaar stelt. Voor het maken van peilingen isselectors.pollPayloadMessagevereist; voor stemmen zijn zowelselectors.pollVoteMessageals de RPC-methodepoll.votevereist. De OpenClaw-plugin kondigt alleen acties aan die door de gecachte probe worden ondersteund, terwijl bij een lege cache optimistisch wordt uitgegaan van ondersteuning en bij de eerste verzending een probe wordt uitgevoerd.
openclaw channels status --probe het kanaal als works meldt, maar specifieke acties tijdens de verzending de fout “iMessage <action> requires the imsg private API bridge” geven, voer imsg launch dan opnieuw uit — de helper kan wegvallen (door het opnieuw starten van Messages.app, een OS-update enzovoort) en de gecachte status available: true blijft acties aankondigen totdat de volgende probe deze vernieuwt.
Wanneer SIP ingeschakeld blijft
Als het uitschakelen van SIP niet aanvaardbaar is voor je dreigingsmodel:imsgvalt terug op de basismodus — alleen tekst + media + ontvangen.- De OpenClaw-plugin kondigt nog steeds het verzenden van tekst/media en het bewaken van inkomende berichten aan;
react,edit,unsend,reply,sendWithEffecten groepsbewerkingen worden verborgen uit het actieoppervlak (volgens de mogelijkhedenpoort per methode). - Je kunt een afzonderlijke Mac zonder Apple Silicon (of een speciale bot-Mac) met uitgeschakelde SIP gebruiken voor de iMessage-werklast, terwijl SIP op je primaire apparaten ingeschakeld blijft. Zie hieronder Speciale macOS-gebruiker voor de bot (afzonderlijke iMessage-identiteit).
Toegangsbeheer en routering
- DM-beleid
- Groepsbeleid + vermeldingen
- Sessies en deterministische antwoorden
channels.imessage.dmPolicy beheert directe berichten:pairing(standaard)allowlist(vereist ten minste één vermelding inallowFrom)open(vereist datallowFrom"*"bevat)disabled
channels.imessage.allowFrom.Vermeldingen in de toelatingslijst moeten afzenders identificeren: handles of statische toegangsgroepen voor afzenders (accessGroup:<name>). Gebruik channels.imessage.groupAllowFrom voor chatdoelen zoals chat_id:*, chat_guid:* of chat_identifier:*; gebruik channels.imessage.groups voor numerieke registersleutels van chat_id.ACP-gesprekskoppelingen
iMessage-chats kunnen aan ACP-sessies worden gekoppeld. Snelle procedure voor operators:- Voer
/acp spawn codex --bind hereuit in de DM of toegestane groepschat. - Toekomstige berichten in datzelfde iMessage-gesprek worden naar de gestarte ACP-sessie gerouteerd.
/newen/resetstellen dezelfde gekoppelde ACP-sessie ter plaatse opnieuw in./acp closesluit de ACP-sessie en verwijdert de koppeling.
bindings[] op het hoogste niveau, met type: "acp" en match.channel: "imessage".
match.peer.id kan het volgende gebruiken:
- genormaliseerde DM-handle, zoals
+15555550123ofuser@example.com chat_id:<id>(aanbevolen voor stabiele groepskoppelingen)chat_guid:<guid>chat_identifier:<identifier>
Implementatiepatronen
Speciale macOS-gebruiker voor de bot (afzonderlijke iMessage-identiteit)
Speciale macOS-gebruiker voor de bot (afzonderlijke iMessage-identiteit)
- Maak/meld je aan bij een speciale macOS-gebruiker.
- Meld je in Berichten aan met de Apple ID van de bot voor die gebruiker.
- Installeer
imsgvoor die gebruiker. - Maak een SSH-wrapper zodat OpenClaw
imsgin de context van die gebruiker kan uitvoeren. - Laat
channels.imessage.accounts.<id>.cliPathen.dbPathnaar dat gebruikersprofiel verwijzen.
Externe Mac via Tailscale (voorbeeld)
Externe Mac via Tailscale (voorbeeld)
- Gateway draait op Linux/VM
- iMessage +
imsgdraait op een Mac in je tailnet cliPath-wrapper gebruikt SSH omimsguit te voerenremoteHostmaakt het ophalen van bijlagen via SCP mogelijk
ssh bot@mac-mini.tailnet-1234.ts.net), zodat known_hosts wordt gevuld.Patroon voor meerdere accounts
Patroon voor meerdere accounts
channels.imessage.accounts.Elk account kan velden overschrijven zoals cliPath, dbPath, allowFrom, groupPolicy, mediaMaxMb, geschiedenisinstellingen en allowlists voor hoofdlocaties van bijlagen.Geschiedenis van privéberichten
Geschiedenis van privéberichten
channels.imessage.dmHistoryLimit in om nieuwe sessies voor privéberichten te voorzien van recente gedecodeerde imsg-geschiedenis voor dat gesprek. Gebruik channels.imessage.dms["<sender>"].historyLimit voor overschrijvingen per afzender, waaronder 0 om geschiedenis voor een afzender uit te schakelen.De geschiedenis van iMessage-privéberichten wordt op aanvraag opgehaald uit imsg. Als dmHistoryLimit niet is ingesteld, wordt het globaal vooraf vullen van de geschiedenis van privéberichten uitgeschakeld, maar een positieve channels.imessage.dms["<sender>"].historyLimit per afzender schakelt het vooraf vullen voor die afzender nog steeds in.Media, opsplitsing en afleveringsdoelen
Bijlagen en media
Bijlagen en media
- het verwerken van inkomende bijlagen is standaard uitgeschakeld — stel
channels.imessage.includeAttachments: truein om foto’s, spraakmemo’s, video’s en andere bijlagen naar de agent door te sturen. Als dit is uitgeschakeld, worden iMessages die alleen een bijlage bevatten verwijderd voordat ze de agent bereiken en leveren ze mogelijk helemaal geenInbound message-logregel op. - externe bijlagepaden kunnen via SCP worden opgehaald wanneer
remoteHostis ingesteld - bijlagepaden moeten overeenkomen met toegestane hoofdlocaties:
channels.imessage.attachmentRoots(lokaal)channels.imessage.remoteAttachmentRoots(externe SCP-modus)- geconfigureerde hoofdlocaties breiden het standaardpatroon voor hoofdlocaties
/Users/*/Library/Messages/Attachmentsuit (samengevoegd, niet vervangen)
- SCP gebruikt strikte controle van hostsleutels (
StrictHostKeyChecking=yes) - de grootte van uitgaande media gebruikt
channels.imessage.mediaMaxMb(standaard 16 MB)
Uitgaande tekst en opsplitsing
Uitgaande tekst en opsplitsing
- limiet voor tekstblokken:
channels.imessage.textChunkLimit(standaard 4000) - modus voor opsplitsing:
channels.imessage.streaming.chunkModelength(standaard)newline(eerst opsplitsen op alinea’s)
- uitgaande Markdown voor vet/cursief/onderstrepen/doorhalen wordt omgezet in tekst met systeemeigen opmaak (ontvangers met macOS 15+ geven de opmaak weer; oudere ontvangers zien platte tekst zonder de markeringen); Markdown-tabellen worden omgezet volgens de Markdown-tabelmodus van het kanaal
channels.imessage.sendTransport(autostandaard,bridge,applescript) bepaalt hoeimsgverzendingen aflevert
Adresseringsindelingen
Adresseringsindelingen
chat_id:123(aanbevolen voor stabiele routering)chat_guid:...chat_identifier:...
imessage:+1555...sms:+1555...user@example.com
Acties van de privé-API
Wanneerimsg launch actief is en openclaw channels status --probe privateApi.available: true rapporteert, kan het berichtentool naast normale tekstverzendingen ook systeemeigen iMessage-acties gebruiken.
Alle acties zijn standaard ingeschakeld; gebruik channels.imessage.actions om afzonderlijke acties uit te schakelen:
Beschikbare acties
Beschikbare acties
- react: Voeg iMessage-tapbacks toe of verwijder ze (
messageId,emoji,remove). Ondersteunde tapbacks worden gekoppeld aan liefde, leuk, niet leuk, lachen, benadrukken en vraag. Verwijderen zonder emoji wist de ingestelde tapback. - reply: Stuur een antwoord in een thread naar een bestaand bericht (
messageId,textofmessage, pluschatGuid,chatId,chatIdentifierofto). Voor antwoorden met een bijlage is daarnaast eenimsg-build nodig waarvansend-rich--fileondersteunt. - sendWithEffect: Stuur tekst met een iMessage-effect (
textofmessage,effectofeffectId). Korte namen: slam, loud, gentle, invisibleink, confetti, lasers, fireworks, balloon, heart, echo, happybirthday, shootingstar, sparkles, spotlight. - edit: Bewerk een verzonden bericht op ondersteunde versies van macOS/de privé-API (
messageId,textofnewText). Alleen berichten die de Gateway zelf heeft verzonden, kunnen worden bewerkt. - unsend: Trek een verzonden bericht in op ondersteunde versies van macOS/de privé-API (
messageId). Alleen berichten die de Gateway zelf heeft verzonden, kunnen worden ingetrokken. - upload-file: Stuur media/bestanden (
bufferals base64 of een gehydrateerdemedia/path/filePath,filename, optioneelasVoice). Verouderde alias:sendAttachment. - renameGroup, setGroupIcon, addParticipant, removeParticipant, leaveGroup: Beheer groepschats wanneer het huidige doel een groepsgesprek is. Deze wijzigen de Berichten-identiteit van de host en vereisen daarom een eigenaar als afzender of een
operator.adminGateway-client. - poll: Maak een systeemeigen peiling in Apple Berichten (
pollQuestion,pollOption2 tot 12 keer herhaald, pluschatGuid,chatId,chatIdentifierofto). Ontvangers met iOS/iPadOS/macOS 26+ zien de peiling en kunnen er systeemeigen op stemmen; oudere OS-versies krijgen als terugval de tekst “Er is een peiling verzonden”. Vereistselectors.pollPayloadMessage. - poll-vote: Stem op een bestaande peiling (
pollIdofmessageId, plus precies één vanpollOptionIndex,pollOptionIdofpollOptionText). Vereistselectors.pollVoteMessageen de RPC-methodepoll.vote.
poll-vote nodig heeft.Bericht-ID's
Bericht-ID's
MessageSid-waarden als volledige bericht-GUID’s (MessageSidFull) wanneer die beschikbaar zijn. Korte ID’s zijn beperkt tot de recente, door SQLite ondersteunde antwoordcache en worden vóór gebruik gecontroleerd aan de hand van de huidige chat. Als een korte ID verloopt, probeer het opnieuw met de bijbehorende MessageSidFull en richt je op het gesprek dat deze heeft geleverd. Volledige ID’s omzeilen de binding aan het gesprek of account niet; vervang daarom een ID uit een andere chat door een ID uit het huidige doel. Extern gedelegeerde aanroepen kunnen verouderde volledige ID’s weigeren wanneer bewijs voor het huidige gesprek niet beschikbaar is.Detectie van mogelijkheden
Detectie van mogelijkheden
imsg launch kan slagen zonder afzonderlijke handmatige statusvernieuwing.Leesbevestigingen en typen
Leesbevestigingen en typen
imsg-builds van vóór de lijst met mogelijkheden per methode schakelen typen/lezen stilzwijgend uit; OpenClaw registreert per herstart een eenmalige waarschuwing, zodat de ontbrekende bevestiging kan worden herleid.Inkomende tapbacks
Inkomende tapbacks
channels.imessage.reactionNotifications:"own"(standaard): meld alleen wanneer gebruikers reageren op berichten die door de bot zijn geschreven."all": meld alle inkomende tapbacks van geautoriseerde afzenders."off": negeer inkomende tapbacks.
channels.imessage.accounts.<id>.reactionNotifications.Goedkeuringsreacties (👍 / 👎)
Goedkeuringsreacties (👍 / 👎)
approvals.exec.enabled of approvals.plugin.enabled waar is en het verzoek naar iMessage wordt gerouteerd, levert de Gateway systeemeigen een goedkeuringsprompt af en accepteert deze een tapback om het verzoek af te handelen:👍(Like-tapback) →allow-once👎(Dislike-tapback) →denyallow-alwaysblijft een handmatige terugval: stuur/approve <id> allow-alwaysals een normaal antwoord.
channels.imessage.allowFrom (of channels.imessage.accounts.<id>.allowFrom); voeg het telefoonnummer van de gebruiker in E.164-indeling of het e-mailadres van diens Apple ID toe (chatdoelen zoals chat_id:* zijn geen geldige vermeldingen voor goedkeurders). De jokertekenvermelding "*" wordt gehonoreerd, maar staat elke afzender toe goed te keuren; een lege lijst met goedkeurders schakelt de reactiesnelkoppeling volledig uit. De reactiesnelkoppeling omzeilt bewust reactionNotifications, dmPolicy en groupAllowFrom, omdat de expliciete allowlist met goedkeurders de enige controle is die van belang is voor het afhandelen van goedkeuringen.Autorisatie voor de tekstuele opdracht /approve volgt dezelfde lijst: wanneer channels.imessage.allowFrom niet leeg is, wordt /approve <id> <decision> geautoriseerd aan de hand van die lijst met goedkeurders (niet de bredere allowlist voor privéberichten), en afzenders die wel op de allowlist voor privéberichten staan maar niet in allowFrom, krijgen een expliciete weigering. Wanneer allowFrom leeg is, blijft de terugval naar dezelfde chat van kracht en autoriseert /approve iedereen die door de allowlist voor privéberichten wordt toegestaan. Voeg elke operator die goedkeuringen moet kunnen geven — via /approve of via reacties — toe aan allowFrom.Operatornotities:- De reactiekoppeling wordt zowel in het geheugen als in de permanente opslag met sleutels van de Gateway bewaard (waarbij de TTL overeenkomt met de vervaldatum van de goedkeuring), en de Gateway controleert openstaande prompts ook op tapbacks, zodat een tapback die kort na een herstart van de Gateway binnenkomt de goedkeuring alsnog afhandelt.
- De
is_from_me=true-tapback van de operator zelf (bijvoorbeeld vanaf een gekoppeld Apple-apparaat) handelt de goedkeuring af wanneer die handle expliciet als goedkeurder is ingesteld. - Goedkeuringsprompts worden alleen naar een groepsgesprek gerouteerd wanneer expliciete goedkeurders zijn geconfigureerd; anders zou elk groepslid kunnen goedkeuren.
- Oudere tapbacks in tekstvorm (
Liked "…"platte tekst van zeer oude Apple-clients) kunnen geen goedkeuringen afhandelen omdat ze geen bericht-GUID bevatten; voor reactieafhandeling zijn de gestructureerde tapbackmetagegevens vereist die huidige macOS-/iOS-clients versturen.
Vraagreacties (1️⃣ / 2️⃣ / 3️⃣ / 4️⃣)
Vraagreacties (1️⃣ / 2️⃣ / 3️⃣ / 4️⃣)
ask_user-prompt met één niet-geheime vraag met één selecteerbare optie en één tot vier opties voegt OpenClaw genummerde emojikeuzes toe. Reageer op de afgeleverde prompt met het overeenkomstige nummer om de vraag te beantwoorden. De reactie moet de stabiele GUID van het door de bot opgestelde bericht bevatten; OpenClaw wijst het nummer vervolgens via de Gateway toe aan de canonieke optie. Verouderde of dubbele tikken worden genegeerd.Prompts met meerdere vragen, meerdere selecties of vrije tekst kunnen alleen via een tekstantwoord worden beantwoord. Vraagreacties volgen de normale toelatingsregels voor iMessage-DM’s en -groepen. Ze worden ook herkend wanneer algemene reactionNotifications "off" is, zonder niet-gerelateerde reacties om te zetten in agentgebeurtenissen.Configuratieschrijfbewerkingen
iMessage staat standaard door het kanaal geïnitieerde configuratieschrijfbewerkingen toe (voor/config set|unset wanneer commands.config: true).
Uitschakelen:
Gesplitst verzonden DM’s samenvoegen (opdracht + URL in één compositie)
Apple kan een opdracht en het URL-voorbeeld ervan als afzonderlijke fysiekechat.db-rijen opslaan. imsg 0.13.1 en nieuwer voegt die rijen samen voordat bewaking, geschiedenis of zoeken het bericht retourneert, zodat OpenClaw één logisch inkomend bericht ontvangt zonder kanaalspecifieke DM-latentie toe te voegen.
Er is geen iMessage-instelling voor samenvoeging nodig. De uitgefaseerde sleutel channels.imessage.coalesceSameSenderDms wordt verwijderd door openclaw doctor --fix. Generieke messages.inbound-debounce blijft beschikbaar wanneer je bewust snel opeenvolgende tekstberichten binnen een kanaal wilt bundelen.
Als verzendingen met een opdracht plus URL als afzonderlijke agentbeurten binnenkomen, werk je imsg bij op de Mac met Berichten:
Herstel van inkomende berichten na een herstart van de bridge of Gateway
iMessage herstelt berichten die zijn gemist terwijl de Gateway niet actief was en onderdrukt tegelijkertijd de verouderde ‘backlogbom’ die Apple na Push-herstel kan doorspoelen. Het standaardgedrag is altijd ingeschakeld en is gebaseerd op duurzame invoer en een leeftijdsgrens.- Duurzame bescherming tegen herhaling. Voordat de herstelcursor wordt vooruitgeschoven, registreert OpenClaw elke onbewerkte rij in de gedeelde SQLite-invoerwachtrij, met de Apple-GUID als gebeurtenis-ID. Een voltooide rij laat ongeveer 4 uur lang een tombstone achter, met een maximum van 10.000 vermeldingen, zodat een herhaling met dezelfde GUID zelfs na een herstart wordt verwijderd. Een openstaande rij blijft herstelbaar totdat de verzending deze overneemt.
- Herstel na uitvaltijd. Bij het opstarten onthoudt de monitor de rowid van de laatst duurzaam toegelaten
chat.db-rij (een permanente cursor per account) en geeft deze alssince_rowiddoor aanimsg watch.subscribe, zodat imsg rijen herhaalt die nog niet waren geregistreerd en daarna live blijft volgen. Rijen die vóór een crash zijn geregistreerd, worden vanuit SQLite hervat. De herhaling is beperkt tot de meest recente 500 rijen en tot berichten van maximaal ~2 uur oud, en GUID-tombstones verwijderen alles wat al is verwerkt. - Leeftijdsgrens voor verouderde backlog. Rijen boven de opstartgrens zijn daadwerkelijk live; een rij waarvan de verzenddatum meer dan ~15 minuten vóór de aankomsttijd ligt, behoort tot de doorgestroomde Push-backlog en wordt onderdrukt. Herhaalde rijen (op of onder de grens) gebruiken in plaats daarvan het ruimere herstelvenster, zodat een recent gemist bericht wordt afgeleverd maar oude geschiedenis niet.
cliPath-configuraties, omdat de herhaling door since_rowid via dezelfde imsg-RPC-verbinding verloopt. Het verschil is het venster: wanneer de Gateway chat.db kan lezen (lokaal), verankert deze de rowid-opstartgrens, begrenst deze het herhalingsbereik en levert deze gemiste berichten af die maximaal enkele uren oud zijn. Via een externe SSH-cliPath kan de database niet worden gelezen, waardoor de herhaling niet wordt begrensd en elke rij de live leeftijdsgrens gebruikt. Recent gemiste berichten worden nog steeds hersteld en oude backlog wordt nog steeds onderdrukt, maar met het smallere live venster. Voer de Gateway uit op de Mac met Berichten voor het ruimere herstelvenster.
Voor de operator zichtbaar signaal
Onderdrukte backlog wordt op het standaardniveau vastgelegd en nooit stilzwijgend verwijderd (de vlagrecovery geeft aan welk venster is toegepast):
Migratie
channels.imessage.catchup.* is verouderd — herstel na uitvaltijd gebeurt automatisch en vereist voor nieuwe configuraties geen configuratie. Bestaande configuraties met catchup.enabled: true blijven als compatibiliteitsprofiel voor het venster voor herhaling bij herstel ondersteund. Uitgeschakelde inhaalblokken (enabled: false of geen enabled: true) zijn uitgefaseerd; openclaw doctor --fix verwijdert deze.
Problemen oplossen
imsg niet gevonden of RPC niet ondersteund
imsg niet gevonden of RPC niet ondersteund
imsg bij. Als acties via de privé-API niet beschikbaar zijn, voer je imsg launch uit in de aangemelde macOS-gebruikerssessie en voer je de probe opnieuw uit. Als de Gateway niet op macOS wordt uitgevoerd, gebruik je de bovenstaande configuratie voor een externe Mac via SSH in plaats van het standaard lokale imsg-pad.Berichten worden verzonden, maar inkomende iMessages komen niet aan
Berichten worden verzonden, maar inkomende iMessages komen niet aan
chat.db niet verandert, kan OpenClaw het bericht niet ontvangen, zelfs wanneer imsg status --json een gezonde bridge rapporteert.chat.db-rij of imsg watch-gebeurtenis voordat je fouten in OpenClaw-sessies opspoort. Voer dit niet uit als periodieke herstartlus voor de bridge; herhaalde imsg launch plus herstarts van de Gateway tijdens actief werk kunnen afleveringen onderbreken en actieve kanaaluitvoeringen laten vastlopen.Gateway wordt niet uitgevoerd op macOS
Gateway wordt niet uitgevoerd op macOS
cliPath: "imsg" moet worden uitgevoerd op de Mac die bij Berichten is aangemeld. Stel op Linux of Windows channels.imessage.cliPath in op een wrapperscript dat via SSH verbinding maakt met die Mac en imsg "$@" uitvoert.DM's worden genegeerd
DM's worden genegeerd
channels.imessage.dmPolicychannels.imessage.allowFrom- koppelingsgoedkeuringen (
openclaw pairing list imessage)
Groepsberichten worden genegeerd
Groepsberichten worden genegeerd
channels.imessage.groupPolicychannels.imessage.groupAllowFrom- gedrag van de toelatingslijst voor
channels.imessage.groups - configuratie van vermeldingspatronen (
agents.entries.*.groupChat.mentionPatterns)
Externe bijlagen mislukken
Externe bijlagen mislukken
channels.imessage.remoteHostchannels.imessage.remoteAttachmentRoots- SSH-/SCP-sleutelauthenticatie vanaf de Gateway-host
- of de hostsleutel op de Gateway-host aanwezig is in
~/.ssh/known_hosts - of het externe pad leesbaar is op de Mac waarop Berichten wordt uitgevoerd
macOS-toestemmingsprompts zijn gemist
macOS-toestemmingsprompts zijn gemist
imsg wordt uitgevoerd.Verwijzingen naar de configuratiereferentie
Gerelateerd
- Overzicht van kanalen — alle ondersteunde kanalen
- Verwijdering van BlueBubbles en het imsg-pad voor iMessage — aankondiging en migratiesamenvatting
- Overstappen vanaf BlueBubbles — tabel voor configuratievertaling en stapsgewijze overstap
- Koppelen — DM-authenticatie en koppelingsflow
- Groepen — gedrag van groepschats en toelating op basis van vermeldingen
- Kanaalroutering — sessieroutering voor berichten
- Beveiliging — toegangsmodel en beveiliging aanscherpen