After a deploy today (with only a change to some static files), my site joachim-breitner stopped working for endpoints handled by an edge function (paths excluded using the excludedPath config still work).

I also started seeing paths that look like /.netlify/internal/ef-cache/ or /.netlify/internal/ef-cache/favicon.ico being handled by my edge function; I think this is new and I wonder if it is related to the problem. Should “internal” paths really be passed through my edge function?

I tried to exclude these paths from my function using

export const config: Config = {
  path: "/*",
  excludedPath: [
  cache: "manual",

but it did not help, unfortunately.

What could be the cause for this regression?

I found a work-around, by removing this weird prefix from the path passed to my edge function:

export default async (req : Request, context : Context) => {
  const url = new URL(req.url);
  var path = decodeURI(url.pathname);

  // work around https://answers.netlify.com/t/netlify-internal-ef-cache/100213
  if (path.startsWith("/.netlify/internal/ef-cache/")) {
     path = path.replace("/.netlify/internal/ef-cache", "")

But it still seems rather fishy that this internal path leaks into my edge function…

I have same questions too!
Should “internal” paths really be passed through my edge function!!??

We’ve asked the devs about it.

Hi! We’ve had a regression with post-cache edge functions that was resolved last friday, 6:30am UTC.

The /.netlify/internal/ef-cache path is, as you correctly assumed, an internal thing and shouldn’t be shown to edge functions users - but through a bug in a deployment, this wasn’t hidden from users correctly. We’ve since fixed the bug.

Here’s a related forums post that we kept up-to-date: New error in edge function when calling response.text()