Problem running shell commands in Pluto

I’m attempting to capture the output of a shell command in Pluto. In the REPL, the following works:

julia> oc = OutputCollector(`ls -al`)
OutputCollector(`ls -al`, Process(`ls -al`, ProcessRunning), OutputCollectors.LineStream(Pipe(RawFD(4294967295) closed => RawFD(23) active, 0 bytes waiting), Tuple{Float64, String}[], Task (runnable) @0x000000016c00c230), OutputCollectors.LineStream(Pipe(RawFD(4294967295) closed => RawFD(21) active, 0 bytes waiting), Tuple{Float64, String}[], Task (runnable) @0x000000016c00c450), Condition(Base.InvasiveLinkedList{Task}(nothing, nothing), Base.AlwaysLockedST(1)), Base.TTY(RawFD(14) open, 0 bytes waiting), false, true, false, Task[])

julia> stdout = collect_stdout(oc)
"total 254312<... output deleted ...>"

However, when I run the same thing in a Pluto notebook, I get no output from the command.

Is this a bug or expected behavior (i.e., because the notebook is sandboxed)? If the notebook is sandboxed by default, is there a way to enable shell commands?