SecureZip
July 3, 2026 · View on GitHub
SecureZip is a Visual Studio Code extension that lets you securely export your project as a clean ZIP archive.
Stable export workflow with ignore tooling, auto-commit, and tagging.
âš Features
- ðŠ Export to ZIP â Create a ZIP of your project with one click.
- ð Encrypted ZIP â Optionally protect the archive with an AES-256 password (WinZip AES).
- ð Optional Auto Commit â Offer to commit tracked changes before export, with a toggle to include untracked files automatically.
- ð· Auto Tagging â Tag the repository with the export timestamp for traceability.
- ð§¹ Smart Ignore Support â Respects
.gitignoreand project-specific.securezipignoreto strip secrets and build artifacts.
âïž Auto Commit Stage Mode
SecureZip only offers the auto-commit step when it detects local changes. By default it stages tracked files via git add --update, matching the safe workflow shown in the warning dialog. If you prefer SecureZip to stage new files as well, switch the stage mode in your settings:
{
"secureZip.autoCommit.stageMode": "all"
}
tracked(default) â Stage edits/deletions to tracked files only.allâ Stage tracked and untracked files (git add --all).
ð· Tagging Mode
SecureZip can tag exports for traceability. Choose the tagging behavior per export or set a default:
{
"secureZip.tagging.mode": "ask"
}
ask(default) â Prompt to use the default tag, skip, or enter a custom tag.alwaysâ Always create the default export tag.neverâ Skip tagging entirely.
Encrypted exports use a distinct default tag, such as
export-encrypted-YYYYMMDD-HHmmss (or
<tagPrefix>-encrypted-YYYYMMDD-HHmmss when you customize
secureZip.tagPrefix).
ð Encrypted ZIP
SecureZip can produce password-protected archives in addition to the regular export. Two commands are available from the Command Palette and the SecureZip view Actions section:
SecureZip: Export Encrypted ZIP(securezip.exportEncrypted) â encrypted variant of the single-root export.SecureZip: Export Workspace Encrypted ZIP(securezip.exportWorkspaceEncrypted) â encrypted variant of the multi-root workspace export.
When you run either command SecureZip prompts twice (password + confirmation).
Mismatched entries trigger a re-prompt; cancelling either prompt aborts the
export without writing any file. The archive uses WinZip AES-256 (method
99) for entry encryption.
Successful encrypted exports are identified as encrypted in the SecureZip view's
Recent Exports section. When a Git tag is associated with the export, that tag
is shown with the recent export entry. The default save name also includes
-encrypted-, for example project-encrypted-YYYYMMDD-HHmmss.zip.
Compatibility
WinZip AES-256 is widely supported by modern tools (7-Zip, Keka, WinRAR,
WinZip), but the legacy "Compressed Folder" viewer on Windows and Info-ZIP
unzip 6.00 / older unzip builds cannot open these archives. Distribute
encrypted archives only to recipients who have a compatible extractor.
What is and isn't protected
Encryption applies to file contents only. The following metadata is not hidden by the format:
- File names, directory structure, and archive layout
- Per-entry sizes, timestamps, CRC values, and compression settings
- The fact that the archive is encrypted
If the names or structure of your files are themselves sensitive, encrypt the archive again inside an outer container (e.g. a 7z archive with header encryption) before sharing.
Failure semantics and concurrency
- SecureZip writes the encrypted archive to a temporary
.partialfile in the output directory and renames it on success. If the write or rename fails the temporary file is removed and any pre-existing ZIP at the destination is left untouched. - When replacing an existing archive inside the export tree, SecureZip excludes
that destination file and leftover SecureZip
.partialfiles from the new archive. Existing destination permission bits are applied to the temporary archive on a best-effort basis before it is renamed into place. - The Git steps (auto-commit / tag) run before the archive is written. If a
ZIP failure occurs after auto-commit or tagging has already succeeded, the
resulting commit or tag remains in your repository â review
git log/git tagand revert manually if you need to roll the change back. - A second export invocation while one is already running is rejected with a warning ("Export is already running"); concurrent runs cannot interleave.
ð¡ Ignore Rules
SecureZip respects the following when selecting files to include:
.gitignoreâ Acknowledged automatically..securezipignoreâ Project rules to exclude and re-include files for export.- Preview deduplication: the SecureZip view merges duplicates with priority
.securezipignore>.gitignore> auto-excludes, hides comments/blank lines and unmatched entries, and shows suppressed sources in the tooltip (âAlso excluded by âŠâ).
.securezipignore syntax (gitignore-like subset):
# commentand empty lines are ignored.patternexcludes matches.!patternre-includes matches (overrides only.securezipignoreexcludes)./pathis treated as workspace-root relative.dir/matches a directory (expanded todir/**).
Examples:
# Exclude all build outputs
dist/
out/
# Exclude all env files, but allow the example
.env*
!.env.example
# Keep a specific file inside an excluded folder
!dist/manifest.json
ð§ Feature Flags
SecureZip supports lightweight feature flags with both build-time defaults and runtime overrides.
- Runtime setting (recommended for users):
secureZip.flags.enableStatusBarButton(default: true)
- Build-time defaults (for maintainers):
esbuild.jsinjects__BUILD_FLAGS__usingdefine, allowing different defaults per build.
- Rollout helpers:
src/flags.tsprovides utilities to compute deterministic buckets frommachineIdif gradual rollout is needed.
Example settings.json override:
{
"secureZip.flags.enableStatusBarButton": false
}
ð Use Cases
- Delivering project source code to clients without leaking secrets.
- Creating reproducible ârelease snapshotsâ of work-in-progress.
- Archiving a clean, tagged version of your repository for audit or compliance.
ð§Ÿ SBOM
npm run sbomgeneratesdist/securezip-sbom.cdx.jsonin CycloneDX format so the extension bundle always ships with a fresh dependency inventory.- The SBOM step also runs automatically after
npm run package; seedocs/sbom.mdfor details and customization tips.
ð Roadmap
- Multiple archive formats (
.tar.gz,.7z) - Custom exclude profiles (
audit,distribution, etc.) - ð Manifest File â Embed an
__export_manifest.jsonwith commit ID, tag, and export metadata (future candidate)
ð¥ Download
- Install from the VS Code Marketplace: yugook.securezip
ð Developer Resources
- Contributing guide â setup, coding standards, and PR checklist.
- Testing guide â how to run type checks, linters, unit, and integration tests.
- Release process â preview/stable branching strategy and versioning rules.
- Architecture overview â maps key modules and data flows.
- Multi-root workspaces â target resolution and workspace ZIP behavior.
- Localization guide â adding translations for runtime and contribution strings.
- SBOM instructions â details about
npm run sbomand the bundled CycloneDX file. - Packaging preflight: run
npm run package:verifybefore tagging/release to catch VS Code engine mismatches forvsce.
ð License
SecureZip is distributed under the MIT License.
SecureZipïŒæ¥æ¬èªïŒ
SecureZip ã¯ããããžã§ã¯ããå®å šãã€ã¯ãªãŒã³ãª ZIP ã¢ãŒã«ã€ããšããŠãšã¯ã¹ããŒãã§ãã Visual Studio Code æ¡åŒµæ©èœã§ãã
ãšã¯ã¹ããŒãã®å®å®çãããŒïŒignore 察å¿ãèªåã³ããããã¿ã°ä»ãïŒãæäŸããŸãã
âš æ©èœ
- ðŠ Export to ZIP â ãããžã§ã¯ããã¯ã³ã¯ãªãã¯ã§ ZIP ã¢ãŒã«ã€ããšããŠãšã¯ã¹ããŒãããŸãã
- ð æå·å ZIP â AES-256ïŒWinZip AESïŒã§ãã¹ã¯ãŒãä¿è·ãã ZIP ãçæã§ããŸãã
- ð Auto CommitïŒä»»æèšå®ïŒ â ãšã¯ã¹ããŒãåã«è¿œè·¡æžã¿å€æŽãã³ããããããã確èªããå¿ èŠã§ããã°æªè¿œè·¡ãã¡ã€ã«ãèªåã¹ããŒãžã§ããŸãã
- ð· Auto Tagging â ãšã¯ã¹ããŒãæå»ãå©çšããŠãªããžããªã«ã¿ã°ãä»ããŸãã
- ð§¹ ã¹ããŒããªé€å€ãµããŒã â
.gitignoreãš.securezipignoreãå°éããæ©å¯æ å ±ããã«ãææç©ãé€å€ããŸãã
âïž Auto Commit ã¹ããŒãžã¢ãŒã
SecureZip ãæªã³ããã倿Žãæ€åºãããšãã ãèªåã³ããããææ¡ããŸããæ¢å®ã§ã¯ git add --updateïŒè¿œè·¡æžã¿ãã¡ã€ã«ã®ã¿ïŒãå®è¡ããŸãããèšå®ã§æªè¿œè·¡ãã¡ã€ã«ãå«ããããã«åãæ¿ããããŸãã
{
"secureZip.autoCommit.stageMode": "all"
}
trackedïŒæ¢å®ïŒâ 远跡æžã¿ãã¡ã€ã«ã®å€æŽ/åé€ã®ã¿ãã¹ããŒãžãallâ 远跡æžã¿ïŒæªè¿œè·¡ãã¡ã€ã«ãã¹ããŒãžïŒgit add --allçžåœïŒã
ð· ã¿ã°ä»ãã¢ãŒã
SecureZip ã¯ãšã¯ã¹ããŒãæã®è¿œè·¡æ§åäžã®ãããã¿ã°ä»ãã®æåãéžæã§ããŸãã
{
"secureZip.tagging.mode": "ask"
}
askïŒæ¢å®ïŒâ æ¯åãããã©ã«ãã¿ã°/ã¹ããã/ã«ã¹ã¿ã ãéžæããŸããalwaysâ åžžã«ããã©ã«ãã¿ã°ãäœæããŸããneverâ ã¿ã°ä»ããè¡ããŸããã
æå·åãšã¯ã¹ããŒãã®ããã©ã«ãã¿ã°ã¯éåžž ZIP ãšåºå¥ã§ããããã
export-encrypted-YYYYMMDD-HHmmss 圢åŒã«ãªããŸãã
secureZip.tagPrefix ã倿ŽããŠããå Žåã¯
<tagPrefix>-encrypted-YYYYMMDD-HHmmss 圢åŒã§ãã
ð æå·å ZIP
SecureZip ã¯éåžžãšã¯ã¹ããŒãã«å ããŠããã¹ã¯ãŒãä¿è·ä»ãã® ZIP ãçæã§ã㟠ããã³ãã³ããã¬ããããã³ SecureZip ãã¥ãŒã®ã¢ã¯ã·ã§ã³ã»ã¯ã·ã§ã³ããæ¬¡ã® 2 ã€ã®ã³ã ã³ããå©çšã§ããŸãã
SecureZip: Export Encrypted ZIPïŒsecurezip.exportEncryptedïŒ â åäž ã«ãŒãåãã®æå·åãšã¯ã¹ããŒããSecureZip: Export Workspace Encrypted ZIPïŒsecurezip.exportWorkspaceEncryptedïŒ â ãã«ãã«ãŒãã¯ãŒã¯ã¹ããŒã¹åã ã®æå·åãšã¯ã¹ããŒãã
å®è¡ãããšãã¹ã¯ãŒããšç¢ºèªå
¥åã® 2 段éã®ããã³ããã衚瀺ãããŸããäžäžèŽã®
å Žåã¯åå
¥åãæ±ããããããããã£ã³ã»ã«ãããš ãã¡ã€ã«ãæžãåºããã«äžæ
ããŸãããšã³ããªæå·åã«ã¯ WinZip AES-256ïŒmethod 99ïŒ ã䜿çšããŸãã
æåããæå·åãšã¯ã¹ããŒãã¯ãSecureZip ãã¥ãŒã®ãæè¿ã®ãšã¯ã¹ããŒããã§æ
å·å ZIP ãšããŠè¡šç€ºãããŸããGit ã¿ã°ãé¢é£ä»ããããŠããå Žåã¯ããã®ã¿ã°ã
æè¿ã®å±¥æŽã«è¡šç€ºãããŸããä¿åãã€ã¢ãã°ã®æ¢å®ãã¡ã€ã«åã«ã
-encrypted- ãå
¥ããäŸãšããŠ
project-encrypted-YYYYMMDD-HHmmss.zip ã®ããã«ãªããŸãã
äºææ§
WinZip AES-256 㯠7-Zip / Keka / WinRAR / WinZip ãªã©ãçŸä»£çãªè§£åããŒã«ã§
åºããµããŒããããŠããŸãããWindows æšæºã®ãå§çž®ãã©ã«ããŒããã¥ãŒã
Info-ZIP unzip 6.00 / å€ã unzip 㯠AES 圢åŒã® ZIP ãéããŸãããé
åž
å
ã§å¯Ÿå¿ããŒã«ãå©çšã§ããããšã確èªããŠããå
±æããŠãã ããã
ä¿è·ãããªãæ å ±
æå·åã®å¯Ÿè±¡ã¯ ãã¡ã€ã«æ¬æã®ã¿ ã§ããæ¬¡ã®ã¡ã¿æ å ±ã¯ä¿è·ãããŸããã
- ãã¡ã€ã«åã»ãã£ã¬ã¯ããªæ§é ã»ã¢ãŒã«ã€ãå šäœã®ã¬ã€ã¢ãŠã
- åãšã³ããªã®ãµã€ãºãã¿ã€ã ã¹ã¿ã³ããCRCãå§çž®èšå®
- ã¢ãŒã«ã€ããæå·åãããŠãããšããäºå®ãã®ãã®
ãã¡ã€ã«åãæ§æèªäœãæ©å¯ã«è©²åœããå Žåã¯ããããæå·åã«å¯Ÿå¿ããå€åŽã®ã³ ã³ããïŒäŸ: 7z ã®ãããæå·åïŒã§ããã«å ãã§ããå ±æããŠãã ããã
倱ææã®æåãšæä»å¶åŸ¡
- æå·å ZIP ã¯åºåå
ãã£ã¬ã¯ããªå
ã®äžæãã¡ã€ã«
.partialã«æžãåºããŠã ããæåæã«æçµãã¡ã€ã«åãžãªããŒã ããŸããæžã蟌ã¿ããªããŒã ã倱æãã å Žåã¯äžæãã¡ã€ã«ãåé€ããåºåå ã«æ¢å ZIP ãããã°ããã¯äžæžããã ãä¿å šãããŸãã - ãšã¯ã¹ããŒã察象ããªãŒå
ã®æ¢åã¢ãŒã«ã€ãã眮ãæããå Žåãåºåå
ãã¡ã€ã«
ãš SecureZip ãæ®ãã
.partialãã¡ã€ã«ã¯æ°ãã ZIP ã«å«ããŸãããåºå å ãã¡ã€ã«ãæ¢ã«ååšããå Žåã¯ããã®æš©éãããããã¹ããšãã©ãŒãã§äžæ ã¢ãŒã«ã€ããžé©çšããŠãããªããŒã ããŸãã - Git ã®èªåã³ããã / ã¿ã°ä»ã㯠ZIP æžãåºãã® å ã«å®è¡ãããŸããZIP
æžãåºã以éã®æ®µéã§å€±æããå ŽåãçŽåã®èªåã³ããããã¿ã°ã¯ãªããžããª
ã«æ®ã ããšããããŸãã
git log/git tagã確èªããå¿ èŠã«å¿ããŠæå ã§ããŒã«ããã¯ããŠãã ããã - å¥ã®ãšã¯ã¹ããŒããæ¢ã«å®è¡äžã®ãšãã«åå®è¡ã詊ã¿ããšãèŠå ïŒ"Export is already running."ïŒã衚瀺ã㊠2 åç®ã®èµ·åã¯ç Žæ£ ãã㟠ããåæå®è¡ã¯è¡ãããŸããã
ð¡ ç¡èŠã«ãŒã«
SecureZip ã¯ã¢ãŒã«ã€ãã«å«ãããã¡ã€ã«ãéžã¶éãæ¬¡ã®ã«ãŒã«ãå°éããŸãã
.gitignoreâ èªåçã«é©çšãããŸãã.securezipignoreâ ãšã¯ã¹ããŒãå°çšã«é€å€ãåå å«ãæå®ãããããžã§ã¯ãã«ãŒã«ã§ãã- SecureZip ãã¥ãŒã®ãã¬ãã¥ãŒã§ã¯ã
.securezipignore>.gitignore> èªåé€å€ã®åªå é ã§åäžãã¿ãŒã³ã1è¡ã«ãŸãšããã³ã¡ã³ã/空è¡ãæªãããè¡ã¯è¡šç€ºããŸããïŒæå¶ãããåºå žã¯ããŒã«ãããã«è¡šç€ºïŒã
.securezipignore ã®æ§æïŒgitignore äºæã®ãµãã»ããïŒ:
# commentã空è¡ã¯ç¡èŠãããŸããpatternã¯äžèŽããé ç®ãé€å€ããŸãã!patternã¯äžèŽããé ç®ãåå å«ããŸãïŒ.securezipignoreã®é€å€ã®ã¿ãäžæžãïŒã/pathã¯ã¯ãŒã¯ã¹ããŒã¹ã«ãŒãããã®çžå¯Ÿãã¹ã§ããdir/ã¯ãã£ã¬ã¯ããªã«äžèŽããdir/**ã«å±éãããŸãã
äŸ:
# ãã«ãææç©ãé€å€
dist/
out/
# env ãã¡ã€ã«ãé€å€ïŒäŸå€ããïŒ
.env*
!.env.example
# é€å€ãã£ã¬ã¯ããªå
ã®ç¹å®ãã¡ã€ã«ã¯æ®ã
!dist/manifest.json
ð§ æ©èœãã©ã°
SecureZip ã¯ããã«ãæã®ããã©ã«ããšå®è¡æã®äžæžããçµã¿åããã軜éãªæ©èœãã©ã°ããµããŒãããŠããŸãã
- ã©ã³ã¿ã€ã èšå®ïŒãŠãŒã¶ãŒåãïŒ:
secureZip.flags.enableStatusBarButtonïŒããã©ã«ã: trueïŒ
- ãã«ãæããã©ã«ãïŒã¡ã³ãããŒåãïŒ:
esbuild.jsãdefineã§__BUILD_FLAGS__ãæ³šå ¥ãããã«ãããšã«ç°ãªãããã©ã«ããèšå®ã§ããŸãã
- 段éçããŒã«ã¢ãŠãæ¯æŽ:
src/flags.tsã¯machineIdããæ±ºå®çãªãã±ãããç®åºãããŠãŒãã£ãªãã£ãæäŸããŸãã
settings.json ã§ã®äžæžãäŸ:
{
"secureZip.flags.enableStatusBarButton": false
}
ð ãŠãŒã¹ã±ãŒã¹
- ã¯ã©ã€ã¢ã³ããžã®ãœãŒã¹ã³ãŒãæäŸæã«æ©å¯æ å ±æµåºãé²ãã
- é²è¡äžã®äœæ¥ãåçŸå¯èœãªããªãªãŒã¹ã¹ãããã·ã§ããããšããŠä¿åããã
- ç£æ»ã»ã³ã³ãã©ã€ã¢ã³ã¹å¯Ÿå¿ã§ã¿ã°ä»ãã®ã¯ãªãŒã³ãªãªããžããªç¶æ ãã¢ãŒã«ã€ãããã
ð§Ÿ SBOM
npm run sbomã§ CycloneDX 圢åŒã®dist/securezip-sbom.cdx.jsonãçæããæ¡åŒµãäŸåé¢ä¿ã®äžèЧã忢±ã§ããããã«ããŸãããnpm run packageå®äºåŸã«ã SBOM ãèªååºåãããŸãã詳ããã¯docs/sbom.mdãåç §ããŠãã ããã
ð ããŒãããã
- è€æ°ã¢ãŒã«ã€ã圢åŒïŒ
.tar.gzã.7zãªã©ïŒãžã®å¯Ÿå¿ auditãdistributionãªã©ã®ã«ã¹ã¿ã é€å€ãããã¡ã€ã«- ð Manifest File â ã³ããã IDãã¿ã°ããšã¯ã¹ããŒãæ
å ±ãå«ã
__export_manifest.jsonã®åã蟌ã¿ïŒå°æ¥çãªåè£ïŒ
ð¥ ããŠã³ããŒã
- VS Code Marketplace ããã€ã³ã¹ããŒã«: yugook.securezip
ð éçºè åããªãœãŒã¹
- ã³ã³ããªãã¥ãŒãã¬ã€ã â ã»ããã¢ãããã³ãŒãã£ã³ã°èŠçŽãPR ãã§ãã¯ãªã¹ãã
- ãã¹ãã¬ã€ã â åãã§ãã¯ãlintããŠããã/ã€ã³ãã°ã¬ãŒã·ã§ã³ãã¹ãã®å®è¡æ¹æ³ã
- ãªãªãŒã¹æé â ãã¬ãã¥ãŒ/å®å®çã®ãã©ã³ãæŠç¥ãšããŒãžã§ã³ã«ãŒã«ã
- ã¢ãŒããã¯ãã£æŠèŠ â äž»èŠã¢ãžã¥ãŒã«ãšããŒã¿ãããŒã®èª¬æã
- ãã«ãã«ãŒãã¯ãŒã¯ã¹ããŒã¹ â ã¿ãŒã²ãã解決㚠Workspace ZIP ã®æåã
- ããŒã«ã©ã€ãºã¬ã€ã â å®è¡æã»ã³ã³ããªãã¥ãŒã·ã§ã³æååãžã®ç¿»èš³è¿œå æé ã
- SBOM æé â
npm run sbomã®è©³çްãšå梱ããã CycloneDX ãã¡ã€ã«ã«ã€ããŠã - ããã±ãŒãžåãã§ãã¯: ã¿ã°/ãªãªãŒã¹åã«
npm run package:verifyãå®è¡ããŠãVS Code ãšã³ãžã³ã®äžæŽåã§vsceã倱æããªãã確èªããŠãã ããã
ð ã©ã€ã»ã³ã¹
SecureZip 㯠MIT License ã§é åžããŠããŸãã