Path is working only either for / or for /{id} not both

In short, I have single ingress on path / which is forwarded to Kong.

I have two services registered, with / being public part of api and /admin/{resource_id} protected with oauth.

Second service is using following configuration, path here only:

routes:
  - name: admin_endpoint
    paths:
      - /admin/
    strip_path: false

Which works as expected for /admin/ path e.g. GET all resources. When I add a additional paths like below:

routes:
  - name: admin_endpoint
    paths:
      - /admin/?$
    strip_path: false

Request works and token is passed to upstream and I am able to GET single resource, but on GET /admin token is not passed to upstream. (I am able to verify via logs that requested are routed to service admin_endpoint although I have service registered with / which doesn’t have oauth configured so requests are properly routed.)

Ingress is routed via / directly to Kong.

So conclusion is, either I have working configuration that works on root path /admin or admin/{id} but not both.

Anyone faced similar issue or ideas how to tackle this particular issue? Traffic on both paths is reaching application but based on configuration authentication header is passed only to /admin/ or /admin/{id}