Skip to content

Make iloom-hook.js bidirectional for permission responses #388

@acreeger

Description

@acreeger

Description

Currently iloom-hook.js is fire-and-forget (broadcast only). To enable cross-loom permission approval from iloom-vscode, we need bidirectional communication.

Current Behavior

  • Hook receives event from Claude Code
  • Broadcasts to all /tmp/iloom-*.sock sockets
  • Closes connection immediately

New Behavior for PermissionRequest

When ILOOM_BIDIRECTIONAL_HOOK=1 is set:

  1. Hook receives PermissionRequest event
  2. Connects to socket and sends event
  3. Keeps socket open, waits for response
  4. Receives {"decision": "allow"} or {"decision": "deny"}
  5. Returns decision to Claude Code via stdout

When flag is NOT set:

  • Existing fire-and-forget behavior (backwards compatible)

Changes Required

templates/hooks/iloom-hook.js:

  • Check for ILOOM_BIDIRECTIONAL_HOOK env var
  • For PermissionRequest events + flag set: keep socket open, wait for response
  • Return decision to Claude Code

src/utils/claude.ts (launchClaude):

  • Set ILOOM_BIDIRECTIONAL_HOOK=1 env var when launching Claude

ClaudeHookManager.ts:

  • Set timeout to 86400 seconds for PermissionRequest hook

Companion Issue

iloom-vscode: iloom-ai/iloom-vscode#66

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    Status

    No status

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions