function cmd::identity::_show() {
  local name=""
  while [[ $# -gt 0 ]]; do
    case "$1" in
      --name) name="$2"; shift 2 ;;
      --help) cmd::identity::help; return ;;
      *) log::error "Unknown flag: $1"; return 1 ;;
    esac
  done
 
  [[ -z "$name" ]] && { log::error "Missing required flag: --name"; return 1; }
  identity::require_exists "$name" || return 1
 
  # Gather identity-level metadata
  local policy strict auto rules_list peer_count
  policy=$(identity::policy "$name")
  strict=$(identity::rule_flags "$name" "strict_rule")
  auto=$(identity::rule_flags   "$name" "auto_apply")
  rules_list=$(identity::rules  "$name" | tr '\n' ',' | sed 's/,$//' | sed 's/,/, /g')
 
  local data
  data=$(identity::show_data "$name")
  peer_count=$(echo "$data" | grep '^peer_count|' | cut -d'|' -f2)
 
  # Precompute handshakes once for all peers in this identity
  declare -A _id_handshakes=()
  while IFS=$'\t' read -r pk ts; do
    [[ -n "$pk" ]] && _id_handshakes["$pk"]="$ts"
  done < <(wg show "$(config::interface)" latest-handshakes 2>/dev/null)
 
  # Header
  echo ""
  ui::row "Identity"    "$name"
  ui::row "Policy"      "$policy"
  ui::row "Rules"       "${rules_list:-—}"
  ui::row "Strict rule" "$(ui::bool "$strict")"
  ui::row "Auto apply"  "$(ui::bool "$auto")"
  ui::row "Peers"       "$peer_count"
  echo ""
 
  # Device list
  while IFS='|' read -r key val type_val index_val; do
    case "$key" in
      name|peer_count) ;;
      device)
        local status=""
        status=$(cmd::identity::_device_status "$val" _id_handshakes)
        ui::identity::device_row "$val" "$type_val" "$index_val" "$status"
        ;;
    esac
  done <<< "$data"
 
  echo ""
}