List All Custom Post Types Posts in Nav Menu Dynamically

I think you’re only adding the custom posts to the nav menu on the front-end and not on the back-end/wp-admin.

Therefore, you can use is_admin() to see if the hook wp_get_nav_menu_items is being called on the front-end or from an “admin” page such as the Appearance → Menus page.

So, replace this:

function services_menu_filter( $items, $menu, $args ) {
    /* alter the URL for cpt-archive objects */

..with this one:

function services_menu_filter( $items, $menu, $args ) {
    if ( is_admin() ) {
        return $items;
    }

    /* alter the URL for cpt-archive objects */

Alternatively, replace this:

add_filter( 'wp_get_nav_menu_items', 'services_menu_filter', 12, 3 );

..with this one:

if ( ! is_admin() ) {
    add_filter( 'wp_get_nav_menu_items', 'services_menu_filter', 12, 3 );
}