# SuiteCloud CLI 2026.2 (v4.0.0) — Upgrade Briefing

**Audience:** SuiteCloud developers and CI/CD owners
**Date:** 11 August 2026
**Status:** Pre-release. Analysis based on the `release/26.2` branch of [oracle/netsuite-suitecloud-sdk](https://github.com/oracle/netsuite-suitecloud-sdk), which is still receiving commits (most recent: 10 Aug 2026).

---

## TL;DR

NetSuite 2026.2 ships **SuiteCloud CLI for Node.js v4.0.0** — a major version bump with real breaking changes for automation:

1. **Deploy/validate output is completely rewritten.** Anything parsing CLI stdout will break.
2. **Local validation is removed.** `project:validate --server` and `project:deploy --validate` become no-ops that emit a warning.
3. **Node.js 24 LTS is now required** (up from 22). *Not mentioned in Oracle's email notice.*
4. **The npm license-acceptance flag changed** to an environment variable. *Also not in the notice — will hang CI installs.*
5. **SuiteCloud CLI for Java reaches end of support.** Final version 2025.2, downloadable until 2027.1.

**The single most useful mitigation:** v4.0.0 adds a `--json` flag to `project:deploy` and `project:validate` that returns the raw server payload and bypasses all text formatting. Migrate output-parsing automation to this rather than rewriting regexes. Oracle's notice does not mention it.

**Recommended immediate action:** pin any pipeline that installs `@oracle/suitecloud-cli@latest` to `@3.2.0` so the 2026.2 release doesn't upgrade you unattended while you prepare.

---

## Part 1 — What's actually in the release

### Version map

| Package | 2026.1 | 2026.2 |
|---|---|---|
| `@oracle/suitecloud-cli` | 3.2.0 | **4.0.0** |
| `suitecloud-vscode-extension` | 3.2.0 | **4.0.0** (requires CLI `^4.0.0`) |
| `@oracle/suitecloud-sdk-core` | — | **1.0.0** (new, bundled) |
| Bundled SDK JAR | `cli-2026.1.0.jar` | `cli-2026.2.0.jar` |

### The architectural headline: a TypeScript rewrite of the command layer

The dominant change (PR #1037, ~13,000 lines) introduces a new internal package, **`@oracle/suitecloud-sdk-core`** — a TypeScript library bundled into the CLI via `bundleDependencies`. Project, file, object, proxy, and most account command logic now execute natively in Node instead of shelling out to the Java JAR.

**Java is not gone.** A new `diagram.md` in the repo documents the hybrid architecture: Java still handles secure auth and credential storage, the API key file utilities, and the remaining commands (`project:adddependencies`, `account:setup`, `account:setup:ci` were explicitly reverted to their Java implementations during development).

> **Oracle JDK 17 or 21 remains a prerequisite.** Do not remove the JDK from your build agent images.

Supporting changes that came with the migration:

- `adm-zip` replaces the Java zip module for project packaging.
- SuiteScript file templates (map/reduce, restlet, suitelet, user event, etc.) moved into `sdk-core/resources`.
- HTTP and proxy handling centralised into `SuiteCloudHttpsClient` with request telemetry.
- User-facing messages centralised into a `TranslationService` message catalog.

### New capability

**`--json` / `-j` on `project:deploy` and `project:validate`**

> *"Prints the raw JSON response from the server and skips formatted CLI output."*

This is the stable contract for automation. Payload shape:

| Field | Contents |
|---|---|
| `steps[]` | `{ name, status }` — status `SUCCESSFUL` or otherwise |
| `validationResults[]` | `{ type: "ERROR" \| "WARNING", message, validationDetails.component }` |
| `errorMessage` | Endpoint-level error string, when present |

On failure, `--json` emits the raw error payload rather than formatted text, so both the success and failure paths are machine-readable.

### Also in the release

- Structured deploy/validate log files (`--log` now writes a formatted log entry, auto-naming `log_<timestamp>.log` when given a directory).
- Better-preserved error diagnostics from failed deployments.
- Clearer `account:manageauth` messaging when no auth IDs are configured.
- `packages/schemas` removed from the repo (this is what powered local validation).

---

## Part 2 — Breaking changes and impact

### 2.1 Output format rewrite — highest impact

In 2026.1, output was assembled ad-hoc in `DeployOutputHandler.js` / `ValidateOutputHandler.js` as free-text lines. In 4.0.0 it all routes through a single formatter (`ProjectResultFormatter.ts`) that emits a fixed-shape block:

```
DEPLOY SUMMARY
Status: SUCCESS
Steps: 5/5 successful
Validation Results: 0 error(s), 2 warning(s)
SDF Errors: none
Timestamp: Aug 11, 2026, 3:04:05 PM GMT+10
Account: <name>
Account ID: <id>
Role: <role>
Project Name: <name>
------------------------------------------------------------
✔ Step 1: <step name>
✔ Step 2: <step name>
✖ Step 3: <step name>

Issues by file:
1. General (0 error(s), 1 warning(s))
  - WARNING: <message>
2. objects/customrecord_x.xml (1 error(s), 0 warning(s))
  - ERROR: <message>
```

**Specific gotchas for existing parsers:**

| Change | Why it matters |
|---|---|
| Unicode `✔` / `✖` marks at line start | Windows agents on a non-UTF-8 code page will mangle these in captured logs |
| Duplicate messages collapsed to `- ERROR: <msg> (3 occurrences)` | Line-counting to count errors will **undercount** |
| Line numbers removed | The old `- Line No. {n} - {message}` format is gone; issues group by file/component with a `General` bucket first |
| All message strings changed | e.g. `COMMAND_DEPLOY_MESSAGES_APPLYING_INSTALLATION_PREFERENCES` deleted, replaced by `The "Apply Installation Preferences" option was selected for the "{0}" project.` All `LOCALLY_VALIDATED` strings removed |
| Timestamp uses `Intl.DateTimeFormat('en-US', {dateStyle:'medium', timeStyle:'long'})` | Locale-fixed to US English but includes the **agent's** timezone — non-deterministic across regions |

**Mitigation:** switch to `--json`. Do this *before* upgrading — you can't test the new text format against 3.2.0, but you can restructure your parsing logic now.

### 2.2 Local validation removed

Previously `project:validate` prompted *"How do you want to validate your project?"* with **Locally** / **Against account**, and `project:deploy` prompted *"Do you want to validate locally before deploying?"*. Local validation ran client-side in the Java JAR against bundled XSD schemas.

In 4.0.0 both prompts are deleted from the input handlers, and `packages/schemas` — the schemas that powered local validation — was **removed from the repo entirely**. The capability is gone, not merely disabled.

| Command | 2026.1 | 2026.2 |
|---|---|---|
| `project:validate --server` | Opt into server validation | Hidden from `--help`, no effect, warns |
| `project:deploy --validate` | Validate before deploying | Hidden from `--help`, no effect, warns |
| `project:deploy --validate --dryrun` | **Hard error** (mutually exclusive) | Now only warns, command proceeds |

⚠️ **That last row is a silent behaviour flip.** A command combination that used to fail fast will now run. If any pipeline relied on that error as a guard, it will no longer fire.

`--dryrun` itself is unchanged and still supported — but its output goes through the new formatter, which is why Oracle's notice calls it out.

**Operational impact:** every validation now requires a round-trip to NetSuite and valid authentication. Any pre-commit hook, offline build step, or pre-auth pipeline stage that ran `project:validate` without credentials will now fail. Audit for validation steps that run before your auth step.

### 2.3 Node.js 24 LTS required

Up from Node 22. Build agent images need updating. *Not mentioned in Oracle's email notice.*

### 2.4 License acceptance flag changed

*Not mentioned in Oracle's email notice, and it will hang CI installs on an interactive prompt.*

```bash
# 2026.1 — no longer works
npm install -g --acceptSuiteCloudSDKLicense @oracle/suitecloud-cli

# 4.0.0
SUITECLOUD_CLI_ACCEPT_LICENSE=true npm install -g @oracle/suitecloud-cli
```

PowerShell:

```powershell
$env:SUITECLOUD_CLI_ACCEPT_LICENSE = 'true'
npm install -g @oracle/suitecloud-cli
```

This change resolves GitHub issue #938 (an npm warning about the old flag).

### 2.5 SuiteCloud CLI for Java — end of support

| | |
|---|---|
| Final version | 2025.2 |
| Download available until | NetSuite 2027.1 |
| Migration targets | CLI for Node.js, VS Code extension, WebStorm plug-in |

No new releases, features, or fixes. Note that the Java CLI will not receive the 2026.2 server-side output changes, so its output will diverge from what NetSuite actually returns. Worth confirming no legacy pipelines in the org still depend on it.

---

## Part 3 — Recommended action plan

1. **Pin your version now.** Change any `@oracle/suitecloud-cli@latest` install to `@oracle/suitecloud-cli@3.2.0` so 2026.2 doesn't land unattended.
2. **Audit.** Grep pipelines, scripts, and hooks for:
   - `--validate`, `--server`, `--dryrun`
   - `--acceptSuiteCloudSDKLicense`
   - anything parsing `suitecloud` stdout/stderr
   - validation steps that run before authentication
3. **Migrate output parsing to `--json`.** Highest-effort item — budget for it.
4. **Update build agents** to Node.js 24 LTS. Keep Oracle JDK 17/21.
5. **Update install scripts** to use `SUITECLOUD_CLI_ACCEPT_LICENSE=true`.
6. **Test against a sandbox** — run deploy, validate, and dryrun, and diff actual output against what your scripts expect.
7. **Coordinate the VS Code extension bump** to 4.0.0 for developers, since it requires CLI `^4.0.0`.

---

## Part 4 — In flight, not yet merged

Worth tracking but not part of the 2026.2 commitment:

- **Windows standalone executable** (`tscorewebpack1` branch) — webpack-bundles the CLI into a single JS file, then embeds the Node runtime via Node.js SEA to produce `suitecloud.exe`. Internal docs mark it "implemented and smoke-tested". Would let Windows users run the CLI with no Node installation at all. Actively committed to as of 10 Aug.
- **VS Code "Dev Assist Control Panel"** (`feature/vscode-devassist-panel`) — a ~1,300-line webview replacing the DevAssist settings page with a proper activity-bar panel plus feedback view.
- Assorted output/formatting fixes: file-upload output behaviour, warning-only section colouring, multi-value option formatting.

**Separately, on `master` (not on the 26.2 release branch):** a new `packages/ai-plugins` publishing three plugins for both Anthropic and OpenAI platforms — **NetSuite SuiteCloud** (developer-focused), **NetSuite Finance Analyst**, and **NetSuite AI Connector Companion**. These bundle ten agent skills covering SuiteScript, SDF, UIF SPA, OWASP secure coding, roles and permissions, and the SAFE guide.

---

## Caveats on this analysis

- `release/26.2` is a live branch with commits as recent as 10 August 2026, including one adjusting warning-section colouring in the output formatter. Exact formatting details may shift before GA — a further argument for `--json` over text parsing.
- `release/26.2` carries `@oracle/suitecloud-unit-testing` at **1.7.0** while 2026.1 shipped **1.8.0**. The release branch was cut from `dev` before that bump landed on `master`. This looks like a branching oversight rather than an intentional downgrade — worth watching, but not a real change to plan around.
- Findings are derived from source code on the release branch, not from released binaries or official Oracle release notes.

---

## References

- Repository: [oracle/netsuite-suitecloud-sdk](https://github.com/oracle/netsuite-suitecloud-sdk)
- Key files reviewed: `packages/sdk-core/src/commands/project/result/ProjectResultFormatter.ts`, `packages/node-cli/src/commands/project/ProjectCommandOutputFormatter.js`, `packages/node-cli/src/metadata/SdkCommandsMetadata.json`, `packages/node-cli/src/metadata/SdkCommandsMetadataPatch.json`, `packages/node-cli/messages.json`, `packages/node-cli/README.md`, `diagram.md`
- Oracle documentation: SuiteCloud CLI for Node.js — SuiteAnswers ID 91790
