···1212 let open Ezjsonm in
1313 let data = Control.data control_msg in
1414 Log.info (fun m -> m "Handling control request: %s" (Control.subtype control_msg));
1515+ Log.info (fun m -> m "Control request data: %s" (value_to_string data));
1516 match Json_utils.find_string data ["request"; "subtype"] with
1617 | "can_use_tool" ->
1718 let tool_name = Json_utils.find_string data ["request"; "tool_name"] in
1819 let input = find data ["request"; "input"] in
2020+ Log.info (fun m -> m "Permission request for tool '%s' with input: %s"
2121+ tool_name (value_to_string input));
1922 let suggestions =
2023 try
2124 let sugg_json = find data ["request"; "permission_suggestions"] in
···2831 in
2932 let context = Permissions.Context.create ~suggestions () in
30333434+ Log.info (fun m -> m "Invoking permission callback for tool: %s" tool_name);
3135 let result = match t.permission_callback with
3232- | Some callback -> callback ~tool_name ~input ~context
3333- | None -> Permissions.default_allow_callback ~tool_name ~input ~context
3636+ | Some callback ->
3737+ Log.info (fun m -> m "Using custom permission callback");
3838+ callback ~tool_name ~input ~context
3939+ | None ->
4040+ Log.info (fun m -> m "Using default allow callback");
4141+ Permissions.default_allow_callback ~tool_name ~input ~context
3442 in
4343+ Log.info (fun m -> m "Permission callback returned: %s"
4444+ (match result with
4545+ | Permissions.Result.Allow _ -> "ALLOW"
4646+ | Permissions.Result.Deny _ -> "DENY"));
35473648 let response = dict [
3749 "type", string "control_response";
···7385 ~request_id:(Json_utils.find_string json ["request_id"])
7486 ~subtype:(Json_utils.find_string json ["request"; "subtype"])
7587 ~data:json in
7676- Log.debug (fun m -> m "Received control request: %s" (Control.subtype control_msg));
8888+ Log.info (fun m -> m "🎯 Received control request: %s (request_id: %s)"
8989+ (Control.subtype control_msg) (Control.request_id control_msg));
7790 handle_control_request t control_msg;
7891 loop ()
7992
+5
claudeio/lib/transport.ml
···8484 let custom_env = List.map (fun (k, v) -> Printf.sprintf "%s=%s" k v) (Options.env options) in
8585 let env = Array.of_list (base_env @ custom_env) in
8686 Log.debug (fun m -> m "Environment: HOME=%s, PATH=%s" home path);
8787+ Log.info (fun m -> m "Full environment variables: %s" (String.concat ", " (Array.to_list env)));
87888889 let stdin_r, stdin_w = Eio.Process.pipe ~sw process_mgr in
8990 let stdout_r, stdout_w = Eio.Process.pipe ~sw process_mgr in
···9596 let process =
9697 try
9798 Log.info (fun m -> m "Spawning claude with command: %s" (String.concat " " cmd));
9999+ Log.info (fun m -> m "Command arguments breakdown:");
100100+ List.iteri (fun i arg ->
101101+ Log.info (fun m -> m " [%d]: %s" i arg)
102102+ ) cmd;
98103 Eio.Process.spawn ~sw process_mgr
99104 ~env
100105 ~stdin:(stdin_r :> Eio.Flow.source_ty r)