vercel/next.js · error · Error
Invalid interception route: ${path}. Cannot use (..) marker
Error message
Invalid interception route: ${path}. Cannot use (..) marker at the root level, use (.) instead. What it means
extractInterceptionRouteInformation rejects interception route strings that use the (..) marker when the intercepting route is at the root level. (..) means 'match one directory up', but the root has no parent, so the marker can never resolve; Next.js requires (.) (sibling match) at root. Fires during route parsing/validation of app-router interception routes.
Source
Thrown at packages/next/src/shared/lib/router/utils/interception-routes.ts:74
`Invalid interception route: ${path}. Must be in the format /<intercepting route>/(..|...|..)(..)/<intercepted route>`
)
}
interceptingRoute = normalizeAppPath(interceptingRoute) // normalize the path, e.g. /(blog)/feed -> /feed
switch (marker) {
case '(.)':
// (.) indicates that we should match with sibling routes, so we just need to append the intercepted route to the intercepting route
if (interceptingRoute === '/') {
interceptedRoute = `/${interceptedRoute}`
} else {
interceptedRoute = interceptingRoute + '/' + interceptedRoute
}
break
case '(..)':
// (..) indicates that we should match at one level up, so we need to remove the last segment of the intercepting route
if (interceptingRoute === '/') {
throw new Error(
`Invalid interception route: ${path}. Cannot use (..) marker at the root level, use (.) instead.`
)
}
interceptedRoute = interceptingRoute
.split('/')
.slice(0, -1)
.concat(interceptedRoute)
.join('/')
break
case '(...)':
// (...) will match the route segment in the root directory, so we need to use the root directory to prepend the intercepted route
interceptedRoute = '/' + interceptedRoute
break
case '(..)(..)':
// (..)(..) indicates that we should match at two levels up, so we need to remove the last two segments of the intercepting route
const splitInterceptingRoute = interceptingRoute.split('/')
if (splitInterceptingRoute.length <= 2) {View on GitHub (pinned to 0eb3775416)
Solutions
- Use the (.) marker instead of (..) at the root level.
Defensive patterns
Strategy: validation
When it happens
Trigger: The (..) interception marker is used at the root level.
Common situations: Using (..) at the top of the route tree where (.) should be used instead.
AI-assisted analysis of vercel/next.js@0eb3775416 (2026-08-19).
Data as JSON: /api/errors/9ba84a4588494a7b.
Report an issue: GitHub.