Serguey Asael Shinder: Arrays.asList is a fixed-size view of the array, not a new list
Arrays.asList looks like a shortcut for building a list. The javadoc describes something else: it "returns a fixed-size list backed by the specified array". Three consequences follow, and each shows up as a bug in code that treated the result as an ordinary ArrayList.
It writes through. "Changes made to the array will be visible in the returned list, and changes made to the list will be visible in the array." So this sorts the caller's array:
String[] names = {"b", "a", "c"};
List<String> view = Arrays.asList(names);
Collections.sort(view); // names is now {"a", "b", "c"}
A method that takes an array, wraps it and hands the list to someone else has handed over write access to the array.
It cannot grow or shrink. The list "implements the optional Collection methods, except those that would change the size of the returned list. Those methods leave the list unchanged and throw UnsupportedOperationException." set works, add and remove do not. The exception is a runtime one, so it appears only when a caller several layers away decides to append an element.

It does not unpack a primitive array. The parameter is T... a, and a type parameter cannot be a primitive type, so for an int[] the compiler infers T as int[] itself:
int[] numbers = {1, 2, 3};
List<int[]> wrapped = Arrays.asList(numbers); // size 1
Code that wrote Arrays.asList(numbers).contains(2) compiles and always returns false.
What to use instead
If you want a copy you can modify, say so: new ArrayList<>(Arrays.asList(names)). If you want a list nobody can modify, use List.of or List.copyOf. Their javadoc is explicit that any mutator throws UnsupportedOperationException and that they "disallow null elements", which Arrays.asList allows. For primitives, IntStream.of(numbers).boxed().toList() gives a real List<Integer>.
Arrays.asList remains the right tool for its stated purpose, which the javadoc calls a "bridge between array-based and collection-based APIs". The mistake is using a view where a list was meant.
This note was written against the Java 25 javadoc; there is no JDK on the machine it was written on, so the snippets follow the documented behaviour rather than a local run.