What’s actually slowing this PC down?

Pick the symptom - the matching free tool is one click away.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

iTechGuides is reader-supported. When you buy through links on our site, we may earn an affiliate commission. As an Amazon Associate I earn from qualifying purchases. Learn more

In one September 2026 incident report, Codex warned that 13 skills had invalid SKILL.md files, but the detail beneath the warning said failed to read file: Too many open files (os error 24). That message points first to an operating-system failure to open a file—not proof that the Markdown itself was malformed. The author’s evidence supports file-descriptor exhaustion as the immediate explanation in that incident, while the proposed role of parallel skill loading and MCP-related pipes remains a hypothesis, not a demonstrated cause for every Codex warning.

What the “invalid SKILL.md” warning meant in this incident

The postmortem, published on DEV Community on September 26, 2026, describes a warning that Codex had skipped 13 skills because their SKILL.md files were invalid. The nested error was more diagnostic: failed to read file: Too many open files (os error 24). The report identifies John, writing as “hexisteme notes,” as its author and says it was prepared with AI assistance from an incident and remediation record dated September 21, 2026. Read the incident report.

There is an important difference between failing to open a file and opening it successfully but rejecting its contents. A Markdown or schema problem can only be assessed after the program reads enough of the file to check it. Here, the reported OS error says the read itself could not proceed because the process had too many files open. Editing the document’s text would not address that specific failure.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

This is one person’s report, not proof that every Codex warning containing “invalid” has the same cause. The nested error matters: diagnose the error actually reported rather than treating the warning label as a definitive explanation.

What the author observed

The author’s diagnostic record for 2026 included these snapshots:

Observation Recorded value
Shell soft NOFILE limit 256
Shell hard NOFILE limit Unlimited
Kernel-reported maximum files per process 92,160
Desktop app-server numeric descriptors 274
Desktop app-server PIPE entries 201
Desktop app-server direct children 67
Globally enabled MCP servers 23
Skills in the agent tree 61
Skills in the Codex skill directory 16
Skills in plugin caches 112

These are the author’s observations, not independently verified measurements or population statistics. The skill counts describe configured locations, not how many files Codex was opening at once. Likewise, the shell’s soft limit of 256 cannot be directly compared with the already-running Desktop app-server’s 274 descriptors: the report did not establish that the app-server inherited that shell limit. Its snapshot showed many pipes alongside the read failures, but did not identify which exact descriptor allocation failed.

Why MCP pipes were a plausible explanation, not a proven cause

The author’s working explanation was that parallel skill loading needed temporary file descriptors while a long-running app-server already held many communication pipes associated with session-specific MCP child processes. The recorded pipe and child-process counts made that explanation plausible, but the author did not run a controlled experiment separating the effect of loader concurrency from the effect of retained pipes.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

So the report supports a narrow conclusion: a “too many open files” read failure occurred alongside a substantial pipe footprint, and the checked runs later recovered. It does not establish a general Codex defect, identify the exact descriptor that could not be allocated, or prove that MCP pipes alone caused the failure.

What changed, and what the checks established

The remediation record describes changes to launch limits and default MCP configuration, followed by bounded verification:

  • The CLI launch path was changed to request a soft NOFILE limit of up to 65,536, while respecting a lower hard limit and preserving behavior if the operating system refused the change. A domain launcher received the same target.
  • The global MCP default was reduced from 23 servers to 8. Comfy and video-vision plugins were disabled by default, while domain profiles remained available for work that needed more tools.
  • An attempted user-session launchd maxfiles change was rejected with Operation not permitted. The report does not say that the Desktop GUI’s limit was raised.

The configured target is not the same as a verified limit inside the process that needs it. The verification note says a wrapper probe issued ulimit -Sn 4096 from a parent process whose soft limit was 256. That showed the launch path could attempt a higher limit; it did not demonstrate that the final 65,536 target took effect in every launched process.

After a hot reload, the author recorded 116 numeric descriptors and 78 PIPE entries in the Desktop app-server snapshot, down from 274 and 201, respectively. The author also reports shell syntax checks, parsing and MCP-list checks for 11 profiles, and a strict doctor run with 23 checks OK. Fresh ephemeral runs with both base and full profiles reportedly exited with status 0, produced the requested response marker, and emitted no file-descriptor or skill warnings. A follow-up check found no new MCP orphans.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Those are successful bounded checks, not proof of permanent stability. The author describes them as smoke checks rather than a long-duration session-churn test, so they do not establish that the failure cannot recur or that a lifetime-management defect was fixed.

Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

How to read a similar warning

  1. Inspect the nested error. If the detail says Too many open files (os error 24), treat inability to open the file as the immediate reported failure. Do not conclude from the word “invalid” alone that the file contents are wrong.
  2. Separate process limits from system-wide assumptions. A shell’s ulimit value does not automatically establish the effective limit of an already-running desktop process. Check the process that is actually reporting the failure.
  3. Treat configuration changes as hypotheses to verify. Reducing default MCP demand or changing a launcher limit may be reasonable in a similar diagnosis, but the report does not show either change as a universal fix. Verify the effective limit and observe the affected process rather than relying only on the configured target.
  4. Distinguish a clean smoke test from sustained recovery. Successful short runs show that those runs worked. To investigate recurrence, the author proposed tracking pipe and direct-child counts across sessions; a fresh run with a verified limit that still fails after error 24 disappears could point to a separate syntax or schema problem.

Keep diagnostic output from exposing credentials

The author reports that raw configuration diffs and nearby lines exposed credential values during the investigation. Credential rotation was left unresolved in the incident record. When inspecting MCP configuration, prefer output limited to server names, enabled flags, counts, and whether credentials are present; avoid dumping raw configuration or adjacent lines that may reveal secret values. This security concern is separate from the file-descriptor diagnosis.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.