Skip to content

Recurring issues & bugs

Named problems that span sessions or tools. Close or downgrade when resolved.

Open

Hermes — dual xAI OAuth (personal grok.com vs Crusty xai-oauth) — 2026-06

  • Symptom: Personal grok.com scheduled tasks (band mail, meals) and Hermes xai-oauth on the dedicated laptop use separate xAI browser sessions/accounts. xurl uses a third auth surface (X dev app OAuth). Session confusion can cause failed imagine, wrong account, or silent tool failures.
  • Status (2026-06-06): Aye Robot daily post working — OAuth split is background hygiene, not blocking the morning pipeline.
  • Counterpoint: Split is intentional for identity separation — don't merge personal and Crusty machines; do consolidate or clearly scope auth per machine before the fleet grows.
  • Next (hygiene cadence): Scoped per-provider profiles; re-auth when sessions stale. Active focus: projects/crusty#aye-robot-daily-post--live-quality-tuning-2026-06monitor + adjust output quality. Rotation stays in private notes.
  • Links: projects/crusty, projects/ayerobot-comic, Grok-Brief

Aye Robot — image + Telegram + X (historical debugging class)

  • Status (2026-04-27; routing economics 2026-04-29): On Crusty, grok-imagine + Telegram + xurl are the live Aye Robot stack; E2E brainstorm → pick → Telegram → approve → post verified (2026-04-27). Model routing: two-tier grok-4.20 orchestrator was live through 2026-04-29, then cost rollback toward grok-4-1-fast-reasoning — Aye Robot token volume; see projects/crusty Steady-state economics. Morning Telegram image delivery was intermittent — job tweaked 2026-04-29 (next run validates). Bring-up history: post_comic_test.py dry-run; steady state = xurl. Next build (spec on projects/ayerobot-comic#next-concrete-step--mentions-listen-path): mentions listen path (scheduled read → Telegram digest → optional gated xurl reply). Parallel: post path ~1 week reliability. Consumer-web posting path remains dead (policy). projects/aye-robot-crusty-paused-x-automation.
  • OpenClaw integration gotchas (resolved on host, keep for handoffs): do not put x_api in openclaw.json (not in schema) — X secrets only in .env. Do not use imageGenerationModel for xAI comic panels — use the grok-imagine workspace skill, not built-in image_generate. Do not put grok-imagine-image under models.providers.xai.models with extra keys — image gen does not use that path. Exec: one absolute-path command per invocation — no cd && chains (OpenClaw preflight rejects compounds). Rate limits: xAI TPM was a real truncation failure mode — confirm console limits if output clips mid-response.
  • X dev-app config trap: xurl (and any X API v2 client) calls will return client-forbidden unless the developer app is set to Pay-per-use package and Production environment. Both settings required together; default project state after app creation is not sufficient. → projects/aye-robot-crusty-paused-x-automation (Next steps — switch transport to xurl).
  • Reframe: Earlier 401 / "send vs chat" symptoms were often downstream of silent tool-call failures at the agent gateway — outbound actions never ran cleanly while inbound still worked. Do not assume a credential bug until gateway version and raw tool errors are checked.
  • Reframe, post-gateway: Shell / exec does run — prove it via the agent's session-log audit trail (exec tool, exit code, duration), not by grepping the gateway log alone. Ad-hoc Telegram echo tests without session-log alignment are weak ground truth.
  • Why inbound vs outbound diverge: Receiving uses the main Telegram pipeline; outbound from skills or ad-hoc code may use different env or broken tool params.
  • Split the failures when debugging: (1) Image 401 → provider key / header / visibility in scheduler context. (2) Telegram 401 → bot token in the send URL. (3) Wrong chat/channel identifier → usually 400, not 401.
  • Debug checklist (no secrets in logs): Match inbound and outbound token sources; curl from a login shell and from the scheduler context; align one canonical env; confirm the running agent service version matches the CLI you think you installed.
  • Key-sourcing pattern (actual, confirmed 2026-04-20): On Crusty, .env is the single secret source; the OpenClaw config is the wiring layer that names which env var feeds which skill via ${env:VAR} expansion. Do not duplicate secrets into shell profile files (.zshrc / .bash_profile). Earlier wiki wording ("OpenClaw config file is the runtime source of truth over shell .env") was aspirational and did not match reality — the xAI key has always lived in .env. This item files the aspirational-vs-actual drift explicitly so future handoffs don't inherit the wrong model. The canonical pattern going forward: one .env → config references via ${env:VAR} → skills read from the config. Incoming X API OAuth 1.0a keys (API Key, API Key Secret, Access Token, Access Token Secret) follow this pattern — see post_comic_test.py reference implementation and the v2 port plan on projects/aye-robot-crusty-paused-x-automation.
  • Auth-model trap for X API v2: POST /2/tweets is a user-context endpoint — app-only Bearer tokens cannot call it. Posting needs OAuth 2.0 Auth Code + PKCE (what X's official xurl CLI uses via xurl auth oauth2) or OAuth 1.0a user-context (four keys) (what the bring-up post_comic_test.py used). Bearer only works on read-mostly endpoints that support app-only auth. If a posting call 401s with an otherwise-valid Bearer token, the auth model is wrong, not the token. → projects/aye-robot-crusty-paused-x-automation (Next steps — switch transport to xurl).
  • Next step if resuming: X API v2, manual post, or a different channel — not browser-driven consumer-web automation, which is X-policy-prohibited (permanent-suspension offense) regardless of engineering stability. See Policy posture on projects/aye-robot-crusty-paused-x-automation.
  • Links: projects/crusty, projects/ayerobot-comic, projects/aye-robot-crusty-paused-x-automation, projects/openclaw-autonomy-org, glossary

OpenClaw — session log is the exec audit trail (not the gateway log)

OpenClaw — tool-adapter class failure with reasoning-model function-call format

  • Umbrella: An earlier OpenClaw service build had a tool adapter that could mis-handle function-call-shaped output from xAI reasoning models: wrong parameter names, delimiter leakage into string fields. Symptom: tool calls fail silently; the model may confabulate success because errors aren't surfaced clearly.
  • Contributing factor: CLI-vs-service version skew — a newer CLI can ship alongside an older running service if the launch agent hasn't been reloaded.
  • Mitigation: Restart the gateway to pick up the current installed version; confirm the service reports the expected version. For shell, prefer the session-log audit trail or an independent disk/API check — not only Telegram or the gateway log. Hedge (2026-04-27; paused 2026-04-29 for economics): premium grok-4.20 orchestrator on projects/crustyrolled back to grok-4-1-fast-reasoning-heavy workloads 2026-04-29; re-enable when token budget / stakes justify. If a fast reasoning model regresses on complex tool use, the routing table is still the right place to fix it.
  • Links: projects/crusty (Model routing), session-log subsection above, projects/aye-robot-crusty-paused-x-automation

Resolved

  • Crusty — single-model stack (2026-04-21) → two-tier live (2026-04-27) → economics rollback (2026-04-29): Running grok-4-1-fast-reasoning everywhere was inadequate for the orchestrator under a Telegram-gated posting loop — the confabulation / ground-truth class the wiki had flagged. Fixed 2026-04-27 with per-role routing on Crusty (orchestrator grok-4.20-0309-reasoning, default workers grok-4-1-fast-reasoning); X path = xurl (OAuth 2.0 PKCE, dev app), not post_comic_test.py; Aye Robot gate unlocked with E2E live xurl after approval. 2026-04-29: orchestrator premium tier paused — back toward grok-4-1-fast-reasoning-primary for Aye Robot token cost (projects/crusty Steady-state economics). Pattern / pricing / “orchestrator is the expensive tier” rationale still on projects/crusty Model routing; optional grok-4-1-fast-non-reasoning sub-tier still Phase 5. Links: tool-adapter hedge above, projects/aye-robot-crusty-paused-x-automation.

  • OpenClaw gateway / parser upgrade: Gateway upgraded to the current stable build, addressing the tool-adapter / function-call parsing failure mode. Exec execution is corroborated via the session-log audit trail. Does not solve unattended X posting via consumer-web UI — see projects/aye-robot-crusty-paused-x-automation.