diff --git a/codex-rs/Cargo.lock b/codex-rs/Cargo.lock index 51e4f1614..dba96a148 100644 --- a/codex-rs/Cargo.lock +++ b/codex-rs/Cargo.lock @@ -3829,6 +3829,7 @@ dependencies = [ "serde", "serde_json", "tokio", + "tracing", "url", ] diff --git a/codex-rs/ext/skills/Cargo.toml b/codex-rs/ext/skills/Cargo.toml index 3ba16fddc..5ca97fffc 100644 --- a/codex-rs/ext/skills/Cargo.toml +++ b/codex-rs/ext/skills/Cargo.toml @@ -27,6 +27,7 @@ schemars = { workspace = true } serde = { workspace = true, features = ["derive"] } serde_json = { workspace = true } tokio = { workspace = true, features = ["sync", "time"] } +tracing = { workspace = true } url = { workspace = true } [dev-dependencies] diff --git a/codex-rs/ext/skills/src/tools/read.rs b/codex-rs/ext/skills/src/tools/read.rs index f58f750f7..e8b29905b 100644 --- a/codex-rs/ext/skills/src/tools/read.rs +++ b/codex-rs/ext/skills/src/tools/read.rs @@ -84,7 +84,16 @@ impl ToolExecutor for ReadTool { mcp_resources: self.context.mcp_resources.clone(), }) .await - .map_err(|err| FunctionCallError::RespondToModel(err.message))?; + .map_err(|err| { + tracing::warn!( + error = %err, + turn_id = %call.turn_id, + call_id = %call.call_id, + resource = requested_resource.as_str(), + "skills.read provider request failed" + ); + FunctionCallError::RespondToModel("failed to read skill resource".to_string()) + })?; if result.resource != requested_resource { return Err(FunctionCallError::Fatal( "skill provider returned a different resource".to_string(),