How to prevent a column from repeating in the final result when using the LISTAGG function
You want to see employee name out of aggregated professions list - so you must concatenate it to aggregating expression, not to separate profession in arguments.
If do this directly
select cust_number,
       '['||MAX(cust_name)||':'||listagg(cust_profession,',')  within group (order by cust_number)||']' Cust_profession 
from CUSTOMER_PROFESSION 
group by cust_number;

then cust_name become non-grouped, and Oracle produces an error &quot;ORA-00979: not a GROUP BY expression&quot;.
This can be solved either by wrapping this column with aggregated function, for example, MAX():
select cust_number,
       '['||MAX(cust_name)||':'||listagg(cust_profession,',')  within group (order by cust_number)||']' Cust_profession 
from CUSTOMER_PROFESSION 
group by cust_number;

or by adding this column into grouping expression (preferred):
select cust_number,
       '['||cust_name||':'||listagg(cust_profession,',')  within group (order by cust_number)||']' Cust_profession 
from CUSTOMER_PROFESSION 
group by cust_number, cust_name;

fiddle