diff --git a/src/connectivity/wlan/lib/inspect/src/log/impls.rs b/src/connectivity/wlan/lib/inspect/src/log/impls.rs
index 4385aeaf1d8e0e33646f49c722180d60af49475d..c9a069afa6e30a42eddeb5050b77be9ca3b2bff5 100644
--- a/src/connectivity/wlan/lib/inspect/src/log/impls.rs
+++ b/src/connectivity/wlan/lib/inspect/src/log/impls.rs
@@ -68,6 +68,16 @@ impl<V: WriteInspect + ?Sized> WriteInspect for &V {
     }
 }
 
+/// `Option<T>` does not write an inspect value in the `None` case
+impl<T: WriteInspect> WriteInspect for Option<T> {
+    fn write_inspect(&self, node: &mut finspect::ObjectTreeNode, key: &str) {
+        match self {
+            Some(val) => val.write_inspect(node, key),
+            None => (),
+        }
+    }
+}
+
 // --- Implementations for WLAN types ---
 
 impl_write_inspect!(Str, self => format!("{:?}", self), fidl_common::Cbw, fidl_mlme::BssTypes);
diff --git a/src/connectivity/wlan/lib/inspect/src/log/mod.rs b/src/connectivity/wlan/lib/inspect/src/log/mod.rs
index 91907d6105c263666cf0818aa0468f90e2c36ed4..8818fea7a5cdf7af21fc726f34242bbe67072f5c 100644
--- a/src/connectivity/wlan/lib/inspect/src/log/mod.rs
+++ b/src/connectivity/wlan/lib/inspect/src/log/mod.rs
@@ -35,17 +35,7 @@ pub trait WriteInspect {
 ///        subkey2: 2,
 ///     }
 /// })
-/// inspect_log!(bounded_list_node, {   // logging optional value (only "some" is logged)
-///     some?: Some(1),
-///     none?: Option::<String>::None
-/// }
 /// ```
-///
-/// Note that `inspect_log` will always append a new node. Thus, the following snippet
-/// ```
-/// inspect_log!(bounded_list_node, none?: Option::<String>::None);
-/// ```
-/// would create a node with only a timestamp.
 #[macro_export]
 macro_rules! inspect_log {
     // internal-only shared implementation, should not be used outside
@@ -72,7 +62,6 @@ macro_rules! inspect_log {
 #[macro_export]
 macro_rules! inspect_insert {
     ($node:expr,) => {};
-    // inserting a nested tree
     ($node:expr, $key:ident: { $($sub:tt)+ }) => {
         {
             let child = $node.create_child(stringify!($key));
@@ -85,16 +74,6 @@ macro_rules! inspect_insert {
         inspect_insert!($node, $($rest)*);
     };
 
-    // inserting an optional value
-    ($node:expr, $key:ident?: $val:expr) => {
-        $node.insert_maybe(stringify!($key), $val);
-    };
-    ($node:expr, $key:ident?: $val:expr, $($rest:tt)*) => {
-        inspect_insert!($node, $key?: $val);
-        inspect_insert!($node, $($rest)*);
-    };
-
-    // inserting a value that implements WriteInspect
     ($node:expr, $key:ident: $val:expr) => {
         $node.insert(stringify!($key), &$val);
     };
@@ -177,17 +156,6 @@ mod tests {
         test_utils::assert_str_prop(&sub2_obj, "subsub1", "subsubval1");
     }
 
-    #[test]
-    fn test_inspect_log_optional_value() {
-        let mut node = BoundedListNode::new(finspect::ObjectTreeNode::new_root(), 10);
-
-        inspect_log!(node, some?: Some("a"), none?: Option::<String>::None);
-        let node0 = node.inner().lock().get_child("0").expect("expect node entry 0");
-        let obj0 = node0.lock().evaluate();
-        test_utils::assert_str_prop(&obj0, "some", "a");
-        assert!(obj0.get_property("none").is_none());
-    }
-
     #[test]
     fn test_inspect_log_parsing() {
         // if this test compiles, it's considered as succeeded
@@ -217,12 +185,25 @@ mod tests {
         // if this test compiles, it's considered as succeeded
         let mut node = BoundedListNode::new(finspect::ObjectTreeNode::new_root(), 10);
         let s = String::from("s");
-        let opt = Some(1);
-        inspect_log!(node, s: s, opt?: opt);
+        inspect_log!(node, s: s);
 
         // Should not cause compiler error since value is not moved
         println!("{}", s);
-        println!("{:?}", opt);
+    }
+
+    #[test]
+    fn test_log_option() {
+        let mut node = BoundedListNode::new(finspect::ObjectTreeNode::new_root(), 10);
+
+        inspect_log!(node, some: Some("a"));
+        let node0 = node.inner().lock().get_child("0").expect("expect node entry 0");
+        let obj0 = node0.lock().evaluate();
+        test_utils::assert_str_prop(&obj0, "some", "a");
+
+        inspect_log!(node, none: None as Option<String>);
+        let node1 = node.inner().lock().get_child("1").expect("expect node entry 1");
+        let obj1 = node1.lock().evaluate();
+        assert!(obj1.get_property("none").is_none());
     }
 
     #[test]
diff --git a/src/connectivity/wlan/lib/inspect/src/nodes/mod.rs b/src/connectivity/wlan/lib/inspect/src/nodes/mod.rs
index 17c3d9545e528f2f7ae3ede634d2a0f81caa0858..335df2702d21db5a65f35f600133ab7a29b7089b 100644
--- a/src/connectivity/wlan/lib/inspect/src/nodes/mod.rs
+++ b/src/connectivity/wlan/lib/inspect/src/nodes/mod.rs
@@ -27,7 +27,6 @@ pub trait NodeExt {
     fn insert_str<S: Into<String>>(&mut self, key: &str, value: S) -> &mut Self;
     fn insert_debug<D: std::fmt::Debug>(&mut self, key: &str, value: D) -> &mut Self;
     fn insert<V: WriteInspect>(&mut self, key: &str, value: V) -> &mut Self;
-    fn insert_maybe<V: WriteInspect>(&mut self, key: &str, value: Option<V>) -> &mut Self;
 }
 
 impl NodeExt for finspect::ObjectTreeNode {
@@ -71,13 +70,6 @@ impl NodeExt for finspect::ObjectTreeNode {
         value.write_inspect(self, key);
         self
     }
-
-    fn insert_maybe<V: WriteInspect>(&mut self, key: &str, value: Option<V>) -> &mut Self {
-        if let Some(ref value) = value {
-            value.write_inspect(self, key);
-        }
-        self
-    }
 }
 
 #[cfg(test)]
diff --git a/src/connectivity/wlan/lib/sme/src/client/mod.rs b/src/connectivity/wlan/lib/sme/src/client/mod.rs
index fa4d98aad087b907c6fed64f52d3a2e8f4ca461b..05b176cf2f3fa539e3dbb90b1e994b9512179cd8 100644
--- a/src/connectivity/wlan/lib/sme/src/client/mod.rs
+++ b/src/connectivity/wlan/lib/sme/src/client/mod.rs
@@ -412,7 +412,7 @@ fn inspect_log_join_scan(
             .insert("rsni_db", bss.rsni_dbh / 2)
             .insert("rssi_dbm", bss.rssi_dbm);
     });
-    inspect_log!(node, bss_list: inspect_bss, result?: result_msg);
+    inspect_log!(node, bss_list: inspect_bss, result: result_msg);
 }
 
 fn report_connect_finished(
diff --git a/src/connectivity/wlan/lib/sme/src/client/state.rs b/src/connectivity/wlan/lib/sme/src/client/state.rs
index d16f075738df7336fbb9e2699c470d0f6c40f6da..4e8dfd20edcf26b529329bc894ba0f5883acc0f3 100644
--- a/src/connectivity/wlan/lib/sme/src/client/state.rs
+++ b/src/connectivity/wlan/lib/sme/src/client/state.rs
@@ -320,7 +320,7 @@ impl State {
             inspect_log!(context.inspect.states, {
                 from: start_state,
                 to: new_state.state_name(),
-                ctx?: state_change_msg,
+                ctx: state_change_msg,
             });
         }
         new_state
@@ -409,7 +409,7 @@ impl State {
             inspect_log!(context.inspect.states, {
                 from: start_state,
                 to: new_state.state_name(),
-                ctx?: state_change_msg,
+                ctx: state_change_msg,
             });
         }
         new_state