When you write a lambda expression as async (list of identifiers) => body, the identifiers are parameter names. What you've written to start with is a little bit like trying to write a method declaration as:
public static async Task Method(string file, CancellationToken CancellationToken.None)
which clearly wouldn't work.
Note that in your second example:
var x = CancellationToken.None;
await Parallel.ForEachAsync(files, loopOptions, async (file, x) =>
... you've got two separate x variables... the local variable you've declared in the first line, and then the parameter you've declared in the lambda expression.
Fundamentally, you don't get to specify what the value is when you provide a lmabda expression... the value is passed in by the caller. (In this case, what Parallel.ForEachAsync does might be complicated, based on ParallelOptions - and its own internal cancellation token used to allow a failure in one call to cancel others.)